python—函数基础课程
1.函数是抽象的第一步
1.1 有关高压锅
1.2 函数是抽象出来的结构,是总结,是方法
1.3 多用函数
2.如何定义函数
2.1 def是关键词,括号冒号永不忘,无缩进无真相。
2.2 没有return的函数,不是大丈夫——不是真函数。
2.3 不写doc的函数,就像没有性别的人类。
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test():
"此文档是测试函数功能模块的语句"
return 'yyyy'
print test()
print test.__doc__#此句是显示该文档内容信息
root@kali:~/python/laowangpy# python def1.py
yyyy
此文档是测试函数功能模块的语句
root@kali:~/python/laowangpy#
3.函数的参数魔法和陷阱
3.1 如何定义参数
3.1.1 位置参数,可选参数
位置参数
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(a,b,c):
"此文档是测试函数功能模块的语句"
return a,b,c
print test(1,2,3)
print test.__doc__#此句是显示该文档内容信息
root@kali:~/python/laowangpy# python def1.py
(1, 2, 3)#返回是元组
此文档是测试函数功能模块的语句
root@kali:~/python/laowangpy#
可选参数
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(a=6):
return a
print test(a=2)
root@kali:~/python/laowangpy# python def1.py
2
root@kali:~/python/laowangpy#
3.2 参数的值是局部变量
3.2.1 参数只在函数内部有用
3.2.1 全局变量介绍,使用方法
3.2.2 全局变量最讨厌了
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# python def1.py
3
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
b = 3
def a():
b =4
def c():
return b
print c()
root@kali:~/python/laowangpy#
3.3 参数默认值
3.4 如何修改参数
3.4.1 介绍
3.4.2 这样修改东西,实在是恶心
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
b = [1,2,3,4]
def func(n):
n.append(5)
return n
func(b)
print b
root@kali:~/python/laowangpy# python def1.py
[1, 2, 3, 4, 5]
root@kali:~/python/laowangpy#
3.5 **和*,猩猩是字典,星是元组。
两个**功能当成字典
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(**kr):#两个**功能当成字典
return kr
print test(a=4,c=3,d=6,g=8)
root@kali:~/python/laowangpy# python def1.py
{'a': 4, 'c': 3, 'd': 6, 'g': 8}
root@kali:~/python/laowangpy#
一个*功能当成元组
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(*kr):
return kr
print test(1,2,4,5,6,7,9)
root@kali:~/python/laowangpy# python def1.py
(1, 2, 4, 5, 6, 7, 9)
root@kali:~/python/laowangpy#
一个星号的元组与两个星号的字典,有位置顺序变化,如果换动位置会有报错信息
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(*kr,**xr):
return kr,xr
print test(1,2,4,5,6,7,9,[22,11,33],a=3,b=9,c=8)
root@kali:~/python/laowangpy# python def1.py
((1, 2, 4, 5, 6, 7, 9, [22, 11, 33]), {'a': 3, 'c': 8, 'b': 9})
root@kali:~/python/laowangpy#
名称混淆会报错信息
root@kali:~/python/laowangpy# vi def1.py
root@kali:~/python/laowangpy# python def1.py
Traceback (most recent call last):
File "def1.py", line 7, in <module>
print test(1,2,4,5,6,7,9,[22,11,33],a=3,b=9,c=8)
TypeError: test() got multiple values for keyword argument 'a'
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(a,b,c,*kr,**xr):
return kr,xr
print test(1,2,4,5,6,7,9,[22,11,33],a=3,b=9,c=8)
root@kali:~/python/laowangpy#
名称不同会正常运行,参数替换是顺序的
root@kali:~/python/laowangpy# cat def1.py
#!/usr/bin/pyhon
#--*-- coding:utf-8 --*--
def test(x,y,z,*kr,**xr):
return kr,xr
print test(1,2,4,5,6,7,9,[22,11,33],a=3,b=9,c=8)
root@kali:~/python/laowangpy# python def1.py
((5, 6, 7, 9, [22, 11, 33]), {'a': 3, 'c': 8, 'b': 9})
root@kali:~/python/laowangpy#