Python 函数语法规则
1.定义函数
函数的返回,在函数体中 有return语句,return后可以跟多个值用逗号隔开即可
def add (a,b): # 参数名 是函数中的局部变量
return a+b, str(a)+str(b) # 返回多个数据时返回数据类为元组
函数调用
调用: 直接写函数名称 和传递参数
v=add(100,200)
print(v,type(v))
a=10
def f2():
print('函数执行')
#函数没有写 返回值时 默认返回 None
print( f2() ) # 打印f2() 函数执行后的返回值 为None
2.Python 函数 参数的各种形式
1.参数的“多态性” ---- 参数变量 可以代表任何数据类型
def add(a,b):
return a+b
print( add(1,2) )
print( add("hello","world") )
2. 函数对参数的 处理 分可变数据 和不可变数据 两种情况
a=10 # a变量所引用的 值10 所占的内存空间 不可在改变 其中的数据, int,float,bool,Str 等都是不可变数据
def f2(p1):
p1=p1+1
return p1
print(f2(a)) # 当传递到函数中的数据 是不可变数据时,函数中对该数据的更改,不会影响传递进来之前的数据
print(a) # a 仍然保持为 原来的10
# 以上的输出 分别是 11 和10
l1=[1,2] # l1 所引用的值 所占的空间 是可改变的,list set dict 这些数据类型 的存储空间是 可改变的
def f3(p1):
p1.append(3) # 当传递进来的数据 可变时,函数中对数据做的更改,会对传递进来之前的值 产生影响
return p1
print( f3(l1))
print(l1 )
# 以上两行输出的 值是一样的 改变后的。 l1被函数所改变
l2=[3,4,5]
l3=l2
l3.append(6)
print(l2,l3,id(l2),id(l3)) # 表示 l2 l3 都引用同一个 列表
3.函数定义时和调用时 参数列表中 有等号的情况
1.定义函数时 参数带等号 表示给参数设定默认值
def f1(a,b=10):
print(a,b)
调用函数f1
f1(10) # 只给参数 a 传递值10, b参数采用默认值 10
f1(10,20) # 给a传递10, b传递20
以上两行分别输出10 10; 10 20
2.调用函数时 参数带等号,表示 指定给某一个参数传递值
f1(a=123,b=456)
f1(b=123,a=456) #指定给参数传递值 可以不按照 定义函数时 参数的顺序传递
以上两行输出123 456; 456 123
注意:
f1(b=123, 456) # 调用函数时 如果通过指定参数名传递, 则从第一个指定名称传递开始 后面的参数都必须通过指定名称传递
以上写法 会报语法错误!!
f1(b=123, 456)
^
SyntaxError: positional argument follows keyword argument
3. 函数的参数定义时 和调用时 有星号的情况
1. 定义函数时 参数有星号的情况
def f2(*p1): # 星号参数表示在调用该函数时可以传递任意多个参数
print(p1, type(p1)) # 在函数中用一个参数名字统一表示多个数据,以元组形式存在
f2(1,2,3,4,5) # 可以传递任意多个参数 进去
2.调用函数时 参数带星号的情况
def f3(a,b,c,d,e,f):
print(a,b,c,d,e,f)
t1=(1,2,3,4,5,6)
f3(*t1) # 调用函数f3时,可以用一个变量名将多个数据分别传递给各个参数, 按照变量中的元素顺序传递给各个参数
3.定义时参数有2个星号的情况 表示收集任意多 对 键值对,在函数中该参数类型是 “字典”
def add_info(**i):
print(i,type(i))
add_info(name="张", tel='12345678',email='abc@abc.com')
网友评论