函数
学习代码
#目录
1.函数的基础语法,形参、实参、函数文档
2.关键字和参数数量
3.动手练习题
4.局部变量和全局变量,局部转化全局
5.闭包和闭包内非局部声明
print("------------Life is short,use python------------")
temp = input('Hello world!Please enter 1-5 numbers choice effect : ')
guess = int(temp) #int()将变量temp强制转换为整形,再通过赋值运算直接传给变量guess
#方案一展示,函数的基础语法 def 函数名(参数,参数)
if guess == 1:
def MyfirestFunction(name1,name2):#设置函数和参数数量,参数被定义为形参,只占用一个参数位置
'这个是函数文档,用于让别人更好的理解我的函数'
print(name1 +'Love' + name2)
help(MyfirestFunction)
MyfirestFunction(name1='Lin ',name2=' Ha') #输入两个参数并被调用,传递进来的Lin,Ha叫做实参,因为TA有具体的参数值!
#方案二展示,关键字和参数数量
elif guess == 2:
#*name 代表可以无穷参数,用于不清楚这个函数需要设置多少形参,name1和name2可定义默认值,传递实参中没有值的话被调用
def MyfirestFunction(*name,name1='1',name2='2'):
print(sum(name),name1, name2)
MyfirestFunction(1,2,3,4,5,name1=3,name2=3)
#方案三展示,动手练习题
elif guess == 3:
#计算所有参数的和乘以基数3的结果,基数不参与求和
def mFun(*param, base=3):
result = 0
for each in param:#将每个形参分别替代each遍历结果计算
result += each
result *= base
print('结果是:', result)
mFun(1, 2, 3, 4, 5)
#方案四展示,局部变量和全局变量,局部转化全局
elif guess == 4:
def discounts(price,rate):
# 如果需要将局部变量转化成全局变量 global 变量名(global final_price)
final_price = price * rate #函数内的变量叫做局部变量,只能函数内引用
return final_price
old_price = float(input('请输入原价:')) #函数外设置的变量叫做全局变量
rate = float(input('请输入折扣:'))
new_price = discounts(old_price,rate)
print('打折后的价格是: ',new_price)
#方案五展示,闭包和闭包内非局部声明
#def函数可以嵌套在另一个def函数之中。调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,
#而不会去调用内层函数,除非在嵌套函数之后又显式的对其进行调用。
elif guess == 5:
def fun1():
x = 5
def fun2():
nonlocal x #声明x不是局部变量,该声明非必须项,如闭包内定义了x
x *= x
return x
return fun2()
print(fun1())
匿名函数
学习代码
#目录
1.lambda匿名函数
2.lambda联用BIF之Filter
3.lambda联用BIF之Map
print("------------Life is short,use python------------")
temp = input('Hello world!Please enter 1-10 numbers choice effect : ')
guess = int(temp) #int()将变量temp强制转换为整形,再通过赋值运算直接传给变量guess
#方案一展示,lambda匿名函数(funtion)
#匿名函数的作用可以省去定义函数的内容
if guess == 1:
y = lambda y: 2 * y + y + 1
I = y(1)
print(I)
#方案二展示,lambda联用BIF之Filter
#函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
#该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
elif guess == 2:
newlist = list(filter(lambda x: not(x % 3),range(1,100))) #过滤100以内能被3整除的
print(newlist)
#方案二展示,lambda联用BIF之Map
#Map会根据提供的函数对指定序列做映射。
elif guess == 3:
newlist = list(map(lambda x: x * 2,range(10)))
print(newlist)
递归
print("------------Life is short,use python------------")
temp = input('Hello world!Please enter 1-10 numbers choice effect : ')
guess = int(temp) #int()将变量temp强制转换为整形,再通过赋值运算直接传给变量guess
# age(5)=age(4)+2 第一次进入
# age(4)=age(3)+2 第二次进入
# age(3)=age(2)+2 第三次进入
# age(2)=age(1)+2 第四次进入
# age(1)=18 第五次进入,最后判断终止条件
# age(n)=age(n-1)+2 #n>1 递归终止条件
# age(1)=18 #n=1 等于终止条件
if guess == 1:
def age(n):
if n == 1:
return 18
return age(n-1)+2
print(age(5))