python 学习之路(函数与函数式编程)
函数的定义
函数是逻辑结构化和过程化的一种编程方式:
与过程的区别是函数有返回值,过程没有返回值
# 函数
def func1():
'''测试函数'''
print('函数')
return 0
# 过程
def func2():
'''测试过程'''
print('过程')
好处是:
1. 代码可以重复利用。
2. 方法容易扩展。
3. 程序容易维护。
函数的返回值
说明:返回值可以是任意的类型
def test1():
pass
def test2():
return 0
def test3():
return 1,"你好",{"a":"b"},[1,2,3,4]
a1 = test1()
a2 = test2()
a3 = test3()
print('test1 打印的是 返回数%s , 返回值%s' %(type(a1),a1))
print('test2 打印的是 返回数%s , 返回值%s' %(type(a2),a2))
print('test3 打印的是 返回数%s , 返回值%s' %(type(a3),a3))
#打印结果为:
#test1 打印的是 返回数<class 'NoneType'> , 返回值None
#test1 打印的是 返回数<class 'int'> , 返回值0
#test1 打印的是 返回数<class 'tuple'> , 返回值(1, '你好', {'a': 'b'}, [1, 2, 3, 4])
有参数的函数
正常参数
def youcanfunc(x,y):
print(x)
print(y)
youcanfunc(1,2) # 按照顺序传值 位置参数调用
youcanfunc(y = 1,x = 2) # 关键字调用
默认参数
def youcanfunc(x,y = 2): # 包含一个默认参数
print(x)
print(y)
youcanfunc(1) #可以给y传值,也可以不传,如果传的话,按照传的值走。
参数组
def groupfunc(*args): # 参数多少不固定
print(args)
groupfunc(1,2,3,4) # 两种传参方式
groupfunc(*[1,2,3,4,5])
# 返回结果会是元组形式
# (1, 2, 3, 4)
# (1, 2, 3, 4, 5)
参数为字典
def func(**kwargs):
print(kwargs)
func(name = "tianrun",age = 20)
func(**{'name' : "tianrun",'age' : 20})
# 打印结果:{'name': 'tianrun', 'age': 20}
全局变量与局部变量
name = 'tianrun' # 全局变量
def func(x):
name = 'tt' # 局部变量
print(x , name)
func(name)
print(name)
# 打印:
# tianrun tt
# tianrun
# 说明:可以证明函数里面的name 和外面的name 没有影响
# 如果想要在函数里面更改全局变量用 global 修饰
name = 'tianrun'
def func(x):
global name
name = 'tt'
print(x , name)
func(name)
print(name)
# 打印:
# tianrun tt
# tt
# 说明:尽量不要在函数里面改全局变量;
说明:如果全局变量是列表,字典等变量,在局部是可以更改的。
递归
递归说白了就是自己调用自己
查看下面的例子
def aa (n):
print(n)
return aa(n+1)
aa(1) # 会无限循环,但是python规定,只能递归999次
特性:
1. 必须有一个明确的结束条件
2. 效率不高。若果循环过多可能会导致内存(栈)溢出
lambda 的使用
>>> a = lambda x:x+1
>>> a(1)
2
相当于下面的代码
def a(x):
return x+1
其他
获取系统时间并格式话
>>> import time
>>> time_formate = '%Y-%m-%d %X'
>>> print(time.strftime(time_formate))
2017-12-14 15:09:04
>>>