函数
函数是一个python的程序块,可以接受参数,被调用,并且返回一个值.
一个函数必须给它的调用环境一个值,并且也只能是一个值.
- 定义python函数的一些规则
- 函数代码块以关键字def开始,紧随其后的是函数名,以及被园括号括起来的参数.
- 任何输入的参数都要放在括号中.
- 一个函数的第一个语句可能是一个可选的语句__该函数的文档字符串(说明函数的注释)__或称docstring.
- 在每个函数的代码块中以一个( : )和缩进开始.
- 语句return [表达式]表示退出函数并将一个表达式(可选)返回给调用者(程序),如果return语句之后没有参数(表达式),就返回None.
- 定义函数语法
def 函数名 (参数清单):
"function_docstring"
函数主体部分
return [表达式]
函数的创建与调用
函数的调用即在该函数后面加个()就可以调用了
不含参数的
def fun ():
print("我的名字叫卡卡西")
fun()
我的名字叫卡卡西
含参数的
def fun(p):
print(p)
fun("我的名字叫卡卡西")
我的名在叫卡卡西
函数参数的默认值
#函数参数的默认值
def fun(name="卡卡西"):
print(name+"可能是下一代火影")
fun("漩涡鸣人")
fun("自来也")
fun("木叶丸")
fun()
漩涡鸣人可能是下一代火影
自来也可能是下一代火影
木叶丸可能是下一代火影
卡卡西可能是下一代火影
以一个列表作为传递的参数
#以一个列表作为传递的参数
def fun(p):
for i in p:
print(i)
content = ["卡卡西", "我爱罗", "自来也", "佐助"]
fun(content)
fun("薛之谦")
卡卡西
我爱罗
自来也
佐助
薛
之
谦
函数的返回语句(return)
#函数的返回语句(return)
def fun():
print("我的名字叫卡卡西")
p = fun()
print(p)
type(p)
我的名字叫卡卡西
None #return语句没有参数返回None
使用return语句求n!
#使用return语句求n!的值
n = int(input("请输入一个自然数:"))
def fun(n):
i = 1
f = 1
while i <n+1:
f = f * i
i += 1
return(f)
print("n! ="+str(fun(n)))
python关键字参数传递方法
(关键字=值)
def fun(name="卡卡西", content="成为火影", age="30"):
print("我的名字叫" + name)
print("我的愿望是" + content)
print("我的年龄" + age)
fun()
fun(name="漩涡鸣人", age="20")
fun("我爱罗", "成为风影", "20")#当把该行的调用函数的"20"改成age则报错
我的名字叫卡卡西
我的愿望是成为火影
我的年龄30
---
我的名字叫漩涡鸣人
我的愿望是成为火影
我的年龄20
---
我的名字叫我爱罗
我的愿望是成为风影
我的年龄20
pass语句
python的_pass()语句是一个空语句,它只是为了保证程序完整性去设计的.
#pass语句
for i in 'function':
if i == 'i':
pass #当字符串是"i"时执行代码块pass
print("我的名字叫卡卡西")
print("字母是"+i)
匿名函数(lambda函数)
- lambda函数的特点
- lambda只是一个表达式,比def简单.
- lambda函数的主体是一个表达式,不是代码块,仅仅可以在lambda表达式中封装有限的代码
- lambda拥有自己的局域命名空间,不能访问自己参数列表之外的或全局命名空间里面的参数
lambda函数的语法
lambda arguments : expression
//在调用lambbda函数时,表达式被执行并返回表达式的值.
num = lambda x1, x2: x1 ** x2
print(num(3,4))
81
变量的范围
1 局部作用域(local)
2. 封闭作用域(enclosing)
3. 全局作用域(global)
4. 内置作用域(bulit-in)
python会按照从1–4的顺序往下找
g_sum = 456 #全局作用域(变量)
def outer():
o_sum=996 #封闭作用域(变量)包括inner函数
def inner():
l_sum=256 #局部作用域(变量)
全局变量_局部变量
在python程序设计中经常使用的是全局和局部两个
使用global把局部变量修改成全局变量
def 函数名():
global 变量
使用nonlocal把全局变量改成局部变量
def 函数名():
nonlocal 变量
递归
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
- 使用递归写一个n!的代码
n = int(input("请输入一个数"))
def recursion(n): #recursion递归
if n > 1:
rec = n * recursion(n-1) #递归给自己,即n!= n * (n-1)!
print(str(n) + "!= "+str(rec))
else:
rec = 1 #当n<=1时,n!=1
print(str(n)+"!= "+str(rec))
return rec #返回n!
recursion(n)
recursion(0)
请输入一个数>? 3
1!= 1
2!= 2
3!= 6
0!= 1