①简单示例
a = 10
b = 7
def max(x, y):
if x > y:
return x
else:
return y
print(max(a, b))
输出结果:10
②可变对象与不可变对象
# 不可变对象
a = 10
def chang_x(x):
x += 1
print(a)
# 可变对象
arr_b = [0,1,2,3]
def add(arr):
arr.append(4)
add(arr_b)
print(arr_b)
输出结果:
10
[0, 1, 2, 3, 4]
解释:
# 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。 # 所以,我们在函数中改变了number、str等对象的值,实际上是创建了一个新的对象; # 而对list等进行操作,实际上是改变了它们本身。
③关键字参数
使用关键字来传递参数时,可以不按照顺序进行传参。
def card(num, type):
print("我的第" + str(num) + "张卡牌是" + type + "。")
card(1, "红桃A")
card(type = "黑梅6", num = 2)
输出结果:
我的第1张卡牌是红桃A。
我的第2张卡牌是黑梅6。
④默认参数
# 我们可以在函数声明的时候设置默认参数。这样,当我们使用函数时,若没有传递对应参数,则会使用默认值。 # 默认参数必须放到最后,不然会报错。
def card_2(type, num = 1):
print("我的第" + str(num) + "张卡牌是" + type + "。")
card_2("黑桃2", 5)
card_2("黑桃3")
# 当然在实际写代码的时候,不会这么写,
# 至少也要写成 card_2(type = "黑桃3"),使代码便于人类阅读
输出结果:
我的第5张卡牌是黑桃2。
我的第1张卡牌是黑桃3。
⑤不定长参数
用一个星号表示元组,用两个星号表示字典,来存储不定长的参数;
def var_tuple(*ga):
print(ga)
print(*ga)
for x in ga :
print(x)
def var_dict(**da):
print(da)
# print(**da) 这么写会报错
var_tuple("hello", ", ", "world", "!")
var_dict(a=1, b=2, c=5)
输出结果:
('hello', ', ', 'world', '!')
hello , world !
hello
,
world
!
{'a': 1, 'b': 2, 'c': 5}
⑥ lambda表达式创建匿名函数
示例一:
sum = lambda a, b: a + b
print(sum(3,8))
示例二:
def myfunc(n):
return lambda a: a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))
输出结果:
22
33
示例二的解释:
myfunc(n)函数返回了一个以a为返回值的lambda表达式。