函数的定义与调用:
• def关键字,依次写出函数名、括号、括号中的参数和冒号 :
• 在缩进块中编写函数体,函数的返回值用 return 语句返回。
python中如果函数无返回值, 默认返回None
def 函数名(形参):
函数体
return 返回值
def fun (Name): ###形式参数
print "hello %s" %Name
fun("dream") ###调用函数,实参
结果:
hello dream
理解函数
Python 内置了很多有用的函数,我们可以直接调用:
• abs( )
• cmp( )
• 数据类型转换函数:
int( ), float( ), str( ),unicode( ),bool( )
•函数名与变量名类似,其实就是指向一个函数对象的引用
•给这个函数起了一个“别名”:函数名赋给一个变量
空函数
• 定义一个什么事也不做的空函数,可以用 pass 语句
• pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来
def fun():
pass
参数检查
•调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError
• 如果参数类型不对,Python 解释器就无法帮我们检查
• 数据类型检查可以用内置函数 isinstance 实现
函数定义
默认参数:
当不给参数的时候,返回默认的参数
def fun(name='dream'):
print name
fun()
fun("python")
结果:
dream
python
必选参数
如果不加参数会报错
def fun(N):
print N
fun("dream")
fun()
结果:
dream
Traceback (most recent call last):
File "/home/kiosk/PycharmProjects/_03day/_test.py", line 15, in <module>
fun()
TypeError: fun() takes exactly 1 argument (0 given)
定义可变参数:
可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个
def fun(*args):
print args
fun("dream",1)
fun()
结果:
('dream', 1) ###可以发现返回是一个元组
()
关键字参数:
•关键字参数允许你传入 0 个或任意个含参数名的参数
•这些关键字参数在函数内部自动组装为一个 dict;
•关键字参数用**kwargs
def fun(**kwargs):
print kwargs
fun(a=1, b=2, c=3, d=4)
结果:
{'a': 1, 'c': 3, 'b': 2, 'd': 4} ###返回的为字典
注意:函数的形式参数的默认值不要是可变参数
def fun(li=[]):
li.append("dream")
return li
print fun([1, 2, 3])
print fun()
print fun()
结果:
[1, 2, 3, 'dream']
['dream']
['dream', 'dream']
参数组合
•参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用
•参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数
def fun(name,age=22,*args,**kwargs):
print name,age,args,kwargs
fun("dream",18,"1","2","3",a=1, b=2, c=3, d=4)
结果:
dream 18 ('1', '2', '3') {'a': 1, 'c': 3, 'b': 2, 'd': 4}
函数解包:
def fun(*args, **kwargs):
print args, kwargs
set = {4, 5, 6}
li = [1, 2, 3]
d = {"a": 1, "b": 2, "c": 3, "d": 4}
fun(*set, **d)
fun(*li, **d)
结果:
(4, 5, 6) {'a': 1, 'c': 3, 'b': 2, 'd': 4}
(1, 2, 3) {'a': 1, 'c': 3, 'b': 2, 'd': 4}
参数总结
• 必选参数:必须给参数
•默认参数:默认参数一定要用不可变对象
•可变参数:*args 是可变参数,args 接收的是一个 tuple
•关键字参数:**kw 是关键字参数,kw 接收的是一个dict
•对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它
变量作用域
• 局部变量:只能在函数内部使用的变量
• 全局变量:在整个程序中使用的变量
• global关键字:强制将局部变量转换为全局变量
a = 1
b = 100
def fun():
a=10
fun()
print a
def fun1():
global b ###声明这里是全局变量
b = 1000
fun1()
print b
结果:
1
1000