python基础--函数
1、几个特性
1.1、关于脚本第一行的解释
#!/usr/bin/python3
print("Hello, World!")
关于脚本第一行的 #!/usr/bin/python 的解释,相信很多不熟悉 Linux 系统的同学需要普及这个知识,脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定本脚本用什么解释器来执行。
有这句的,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器。
#!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。
#!/usr/bin/env python 这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python 相当于写死了 python 路径。
#!/usr/bin/env python 会去环境设置寻找 python 目录,可以增强代码的可移植性,推荐这种写法。
分成两种情况:
(1)如果调用 python 脚本时,使用 python script.py,#!/usr/bin/python 被忽略,等同于注释
(2)如果调用python脚本时,使用 ./script.py,#!/usr/bin/python 指定解释器的路径
PS:shell 脚本中在第一行也有类似的声明。
1.2、一个语句同时赋值
#!/usr/bin/python3
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 10:
print(b)
a, b = b, a+b
这个例子介绍了几个新特征。第一行包含了一个复合赋值:变量 a 和 b 同时得到新值 0 和 1。最后一行再次使用了同样的方法,可以看到,右边的表达式会在赋值变动之前执行。右边表达式的执行顺序是从左往右的。
所以,交换两个变量的值,python中可以这样实现:
a = 1
b = 2
print("a=%d, b=%d"%(a, b))
a, b = b, a
print("a=%d, b=%d"%(a, b))
1.3、print()方法
end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下:
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:
print(b, end=',')
a, b = b, a+b
结果输出为:1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
2、函数
2.1、定义函数
# 全局变量和局部变量名字相同 str = "aaa" # 定义了一个全局变量 def myPrint(): #global str #:使用global对一个全局变量的声明 str = "bbb" print(str) myPrint() # 结果:bbb print(str) # 结果:aaa
2.2、缺省参数:
def myPrint(name, age = 10): print(name) print(age) myPrint("zs", 20) myPrint("zs") print("=" * 10) myPrint(name = "zs", age = 30) myPrint(name = "zs")
2.3、不定长参数
def myPrint(a, *params): print(a) print(params) # params是元组类型 (10, 20, 30) myPrint("zs", 10, 20, 30)
def myPrint(a, **params): print(a) print(params) # params是字典类型 {'name': 'zs', 'age': 20} print(type(params)) for key in params: print(key, params[key], end = ", ") myPrint("zs", name='zs', age = 20)
2.4、拆包
def myPrint(a, *args, **params): print(a) print(args) print(params) args = (1, 2, 3); params = {'name':'zs', 'age':20}; myPrint("zs", *args, **params) 打印结果: zs (1, 2, 3) {'name': 'zs', 'age': 20}
2.5、匿名函数
def test(a, b, fn): return fn(a, b) print(test(10, 20, lambda x,y:x+y)) print(test(10, 20, lambda x,y:x-y)) print(test(10, 20, lambda x,y:x*y))
def test(a, b, fn): return fn(a, b) fn_new = input("请输入 lambda表达式:") print(test(10, 20, eval(fn_new)))

posted on 2019-10-09 23:42 wenbin_ouyang 阅读(175) 评论(0) 收藏 举报
浙公网安备 33010602011771号