pythonday06

函数:

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

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

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


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

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

printinfo(
'ok');


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

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


命名关键字参数
name=value
def show(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
def student(name,age,**kw):
   
kw.clear()
    print('姓名{} ,年龄{} other:{}'.format(name,age,kw))

#值传递
def fun3(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)

参数组合
比如定义一个函数,包含上述若干种参数:
def f1(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;#全局变量
def changeNum(g_a):
   
g_a=5;#局部变量
   
print("函数内部:",(g_a+10))

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

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

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

sum=
lambda a,b:a*b;
s=sum(
2,3);
print(s);
def dfdsfe(a,b):
   
return a+b;

def add(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=
lambda x: x%2!=0;
f=filter(fun,foo);

print(list(f))

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

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

l=list(filter(
lambda s:s and len(s.strip())>0,names))
print(l)

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值