PythonMOOC学习笔记(五)
Python语言程序设计
北京理工大学 嵩天等
http://Python123.io 练习编程
第四周(函数和代码复用)
- 函数的定义和使用
def <函数名>(<参数(0个或多个)>):
<函数体>
return <返回值>
- 可选参数传递
def <函数名>(<非可选参数>, <可选参数>):
<函数体>
return <返回值>
def fact (n, m=1): #如果不输入m,m默认为1
<函数体>
return <返回值>
- 可变参数传递
def <函数名>(<参数>, *b):
<函数体>
return <返回值>
def fact(n, *b):
s = 1
for i in range(1,n+1):
s *= i
for item in b:
s *= item
return s
>>> fact(10,3)
>10886400
>>> fact(10,3,5,8)
>435456000
- 参数传递的两种方式:(1):位置传递(2):名称传递
>>> fact(10,5) #位置传递
>>> fact(m=5,n=10) #名称传递
- 函数的返回值:return 可有可无,return 可返回0个或多个值
>>> fact(10,5)
>(725760,10,5) #元组类型
>>>a,b,c = fact(10,5)
>>>print(a,b,c)
>725760 10 5
- 局部变量和全局变量 global
规则1:局部变量和全局变量是不同变量
规则2:局部变量为组合数据类型且未创建,等同于全局变量
ls = ["F", "f"] #通过使用 [] 真实创建了一个全局变量列表 ls
def func(a):
ls.append(a) #此处 ls 是列表类型,未真实创建,则等同于全局变量
return
func("C") #全局变量被修改
printf(ls)
运行结果
['F', 'f', 'C']
- lambda 函数 <函数名> = lambda <参数>: <表达式>
等同于
def <函数名>(<参数>):
<函数体>
return <返回值>
>>>f = lambda x, y : x+y
>>> f(10,15) 输出 25
>>>f = lambda : "函数"
>>>print(f()) 输出 函数
- 代码复用与函数递归
- 递归的定义:函数定义中调用函数自身的方式
两个关键特征:链条,计算过程存在递归链条;基例,存在一个或多个不需要再次递归的基例。
函数+分支语句
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
def rvs(s):
if s=="":
return s
else:
return rvs(s[1:])+s[0]
- Pyinstaller库基本介绍 将.py源代码转换成无需源代码的可执行文件
- cmd命令行 pip install pyinstaller
- (cmd命令行)pyinstaller -F <文件名.py>
例子:pyinstaller -i curve.ico -F SevenDigitsDrawV2.py