#def 定义函数
def是Python中的一个可执行语句 —— 函数并不存在,直到Python运行了def后才存在。 def创建了一个对象,并将其赋值给一个变量名,这个变量名就是函数名。 def可以出现在任一语句可以出现的地方——甚至是嵌套在其他语句中。
def 和 return 配合使用。
def times(x,y):return x*yprint (times(2,3))print (times('mathboy',3))#output________________6mathboymathboymathboy
Python变量可以分为
本地( def 内部,除非用 global 声明)
全局(模块内部)
内置(预定义的builtin模块)
全局声明global会将变量名映射到模块文件内部的作用域。
变量名的引用将依次查找本地、全局、内置变量。
X = 99def add(Y):Z = X + Yreturn Zprint add(1)#output________________100
使用global全局声明:
X = 88def func():global X #使用了global全局声明X = 99func() #想像一下,如果去掉 func()会如何呢?print (X)#output________________99
#print前去掉func()X = 88def func():global XX = 99print (X)#output________________88
y,z = 1,2def func():global xx = y + zfunc()print (x,y,z)#output________________3 1 2#若print前去掉func(),output________________NameError: name 'x' is not defined
导入一个模块后,该模块的全局变量就成为该模块对象的属性。
文件间通信,不要这样做:
# first.pyX = 99# second.pyimport firstfirst.X = 88
应该这样做
# first.pyX = 99def setX(new):global XX = new# second.pyimport firstfirst.setX(88)
函数是可以嵌套的
def f1():x = 88def f2():print (x)f2()f1()#output________________88
函数可以有默认参数
def fun(a, b=3):return a + bprint(fun(1, 2))print(fun(2))#output________________35#含义 只输一个变量,另一个就默认
def中还可以使用lambda表达式
def func():x = 4action = (lambda n: x**n)return actionf = func()print (f(3))#output________________64
Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。与其它语言不同,Python的Lambda表达式的函数体只能有唯一的一条语句,也就是返回值表达式语句。 ```python
下面是个Lambda表达式的例子:
li=[{“age”:20,”name”:”def”},{“age”:25,”name”:”abc”},{“age”:10,”name”:”ghi”}] li=sorted(li,key=lambda x:x[“age”]) print(li)
如果不用Lambda表达式,而要写成常规的函数,那么需要这么写
def comp(x): return x[“age”] li=[{“age”:20,”name”:”def”},{“age”:25,”name”:”abc”},{“age”:10,”name”:”ghi”}] li=sorted(li,key=comp) print(li)
Python函数中,不可变参数(例如**数字和字符串**)是“通过值”进行传递的,可变对象(例如**列表和字典**)是通过“指针”进行传递的。```pythondef func(a,b):a = 1b.append(1)x = 0y = [0]func(x,y)print x,y#output________________0 [0, 1]
Python函数的返回值可以有多个变量,相当于返回的是一个元组,只是圆括号()被省略了。例如:
def set(a,b):a = 3.14b = [1,2,3]return a,bx = 6.28y = [4,5,6]x,y = set(x,y)print xprint y#output________________3.14[1, 2, 3]
Python支持关键字参数,所有基于位置的参数将首先按照从左到右的顺序匹配头部的参数,之后再进行基于变量名的关键字匹配。例如:
def fun(a,b,c):print a,b,cfun(1,c=3,b=2)fun(c=3,a=1,b=2)#output________________1 2 31 2 3
之后的暂时看不懂
http://blog.csdn.net/mathboylinlin/article/details/9401407 原文链接
