#def 定义函数
def是Python中的一个可执行语句 —— 函数并不存在,直到Python运行了def后才存在。 def创建了一个对象,并将其赋值给一个变量名,这个变量名就是函数名。 def可以出现在任一语句可以出现的地方——甚至是嵌套在其他语句中。
def 和 return 配合使用。
def times(x,y):
return x*y
print (times(2,3))
print (times('mathboy',3))
#output________________
6
mathboymathboymathboy
Python变量可以分为
本地( def 内部,除非用 global 声明)
全局(模块内部)
内置(预定义的builtin模块)
全局声明global会将变量名映射到模块文件内部的作用域。
变量名的引用将依次查找本地、全局、内置变量。
X = 99
def add(Y):
Z = X + Y
return Z
print add(1)
#output________________
100
使用global全局声明:
X = 88
def func():
global X #使用了global全局声明
X = 99
func() #想像一下,如果去掉 func()会如何呢?
print (X)
#output________________
99
#print前去掉func()
X = 88
def func():
global X
X = 99
print (X)
#output________________
88
y,z = 1,2
def func():
global x
x = y + z
func()
print (x,y,z)
#output________________
3 1 2
#若print前去掉func(),output________________
NameError: name 'x' is not defined
导入一个模块后,该模块的全局变量就成为该模块对象的属性。
文件间通信,不要这样做:
# first.py
X = 99
# second.py
import first
first.X = 88
应该这样做
# first.py
X = 99
def setX(new):
global X
X = new
# second.py
import first
first.setX(88)
函数是可以嵌套的
def f1():
x = 88
def f2():
print (x)
f2()
f1()
#output________________
88
函数可以有默认参数
def fun(a, b=3):
return a + b
print(fun(1, 2))
print(fun(2))
#output________________
3
5
#含义 只输一个变量,另一个就默认
def中还可以使用lambda表达式
def func():
x = 4
action = (lambda n: x**n)
return action
f = 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函数中,不可变参数(例如**数字和字符串**)是“通过值”进行传递的,可变对象(例如**列表和字典**)是通过“指针”进行传递的。
```python
def func(a,b):
a = 1
b.append(1)
x = 0
y = [0]
func(x,y)
print x,y
#output________________
0 [0, 1]
Python函数的返回值可以有多个变量,相当于返回的是一个元组,只是圆括号()被省略了。例如:
def set(a,b):
a = 3.14
b = [1,2,3]
return a,b
x = 6.28
y = [4,5,6]
x,y = set(x,y)
print x
print y
#output________________
3.14
[1, 2, 3]
Python支持关键字参数,所有基于位置的参数将首先按照从左到右的顺序匹配头部的参数,之后再进行基于变量名的关键字匹配。例如:
def fun(a,b,c):
print a,b,c
fun(1,c=3,b=2)
fun(c=3,a=1,b=2)
#output________________
1 2 3
1 2 3
之后的暂时看不懂
http://blog.csdn.net/mathboylinlin/article/details/9401407 原文链接