pythonday06

函数:

1.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
2.语法:
def函数名(参数列表):
 
函数体
 returnXXX

deffun(a1):
   
a1="李四";
   
print("函数内部a1:",a1)

a=
"张三";
print("调用前:",a)
fun(a)
print("调用后:",a)
ff=[
'悟空','八戒','沙僧'];
deffun(nums):
   
# nums[0]="张飞";
   
# nums[1]="刘备";
   
nums=ff;
nums=[
"李逵","松江"];
print("调用前:",nums)
fun(nums)
print("调用后:",nums)


4.以下是调用函数时可使用的正式参数类型:
deffun1(a=3,b=2):
   
'''
   
:parama第一个加数:
   
:paramb:第二个加数
   
:return: a+b的和
   
'''
   
return a+b;

h=fun1(
4,4);
print(h)
defprintinfo( name, age =35):
 
"打印任何传入的字符串"
 
print("名字: ", name);
 
print("年龄: ", age);
 
return;

printinfo(
'ok');


不定长参数(可变参数):
可变参数允许你传入0个或任意个参数,
这些可变参数在函数调用时自动组装为一个tuple
defGetSum(*nums):
   
sum=0;
   
foriinnums:
       
sum+=i;
    returnsum;

s=[
2,3,4,5];
t=(
2,3,4,5,6,7,8)
print(GetSum())
print(GetSum(*s))
print(GetSum(*t))


命名关键字参数
name=value
defshow(name,age,sorce=90):
   
print('姓名:{}年龄:{}成绩:{}'.format(name,age,sorce))

show(
'OK',30)
show(
age=30,name='OK')
show(
sorce=80,age=30,name='OK')
show(
'OK',name='ok',age=30)

关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,
这些关键字参数在函数内部自动组装为一个dict
例:#关键字参数:**kw
defstudent(name,age,**kw):
   
kw.clear()
    print('姓名{} ,年龄{} other:{}'.format(name,age,kw))

#值传递
deffun3(kw):
   
kw.clear();

student('tom',30,hao='篮球',ai='足球');
dic={
'一':123,'二':223,'三':333}
student(
'ok',30,**dic)
print(dic)

dic2={
'一':123,'二':223,'三':333}
fun3(dic2)
print(dic2)

参数组合
比如定义一个函数,包含上述若干种参数:
deff1(a, b, c=0,*args, **kw):
 
print('a =', a,'b =', b,'c =', c,'args =', args,'kw =', kw)

args = (
1, 2,3,4)
kw = {
'd':99,'x':'#'}
f1(
'A','B')
f1(
b='B',a='A')
f1(
b='B',a='A',c=9)
f1(*args)
f1(
'A','B',**kw)
f1(*args,**kw)

变量作用域:

原因就是: 位置不同-->作用域不同
全局变量与局部变量的作用域不同
生命周期不同
g_a=10;#全局变量
defchangeNum(g_a):
   
g_a=5;#局部变量
   
print("函数内部:",(g_a+10))

print("调用前:",g_a)
changeNum(
1)
print("调用后:",g_a)
当全局变量和局部变量同名时,局部变量优先 -->就近一致原则

匿名函数:
python 使用 lambda来创建匿名函数

deffun1(a=3,b=2):
   
'''
   
:parama第一个加数:
   
:paramb:第二个加数
   
:return: a+b的和
   
'''
   
return a+b;

sum=
lambdaa,b:a*b;
s=sum(
2,3);
print(s);
defdfdsfe(a,b):
   
returna+b;

defadd(a,b,fun):
   
'''
   
:parama:
   
:paramb:
   
:paramfun传递过来的函数:
   
:return:
   
'''
   
print(fun(a,b));

add(
11,22,dfdsfe)

foo = [
2, 18,9,22,17,24,8,12,27]
fun=
lambdax: x%2!=0;
f=filter(fun,foo);

print(list(f))

mapmap
将序列的每个元素传入函数中执行,并把结果作为新的list返回。
print(list( map(lambdax:x%2,foo)))
利用filter(),可以完成很多有用的功能,例如,删除None或者空字符串:
defis_not_empty(s):
   
return sandlen(s.strip())>0;

names=[
'ko',None,'','ok'];

l=list(filter(
lambdas:sandlen(s.strip())>0,names))
print(l)

python reduce():
对于序列内所有元素进行累计操作

r=reduce(
lambdaa,b:a+b,foo);
sum =reduce(
lambdaa,b:a+b, (1,2,3,4,5,6,7))


版权声明:本文为ChaiXinpeng521原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。