一. 函数与函数式编程
1. 面向对象编程
(类)class
2.面向过程编程
(过程) def
3.函数式编程
(函数) def
(1) 函数的特点:
代码重用:
可扩展性;
保持一致性。
(2)函数的定义:
#python 中函数定义方法 def test(x): #定义函数格式 """the function definitions """ #函数说明 x+=1 return x #返回值数=0,返回None,
#返回值数=1,返回object, eg. return 0
#返回值数>1,打包起来返回一个元组. eg. return 1,'lai',[q,4,5]
a = test(4) print(a)
在此插一句,学习一个打印当前时间
import time
time_format = '%Y-%m-%d %X' #时间格式为年月日时分秒
time_current = time.strftime(time_format)
print('现在是北京时间 %s ' % time_current)
(3) 形参与实参
纯关键字参数时与顺序无关;
纯位置参数必须按顺序写;
当同时有关键自参数与位置参数时,关键参数不能写在位置参数前面;
传递参数的时候,实参的个数应小于等于形参的个数。
默认参数:
定义的时候给形参一分值,没有实参传递的时候便用此值,有实参传递,则覆盖此值 def fun(x,y=1):
参数组:
当实参的个数不确定时(非固定参数),用此法;
格式:def fun(*args) #用*号
def fun(*argv): #接收N个位置参数,存放成元组的形式 print(argv) fun(1,2,3,4,5,6,7)
运行结果:
(1, 2, 3, 4, 5, 6, 7)
def fun(x,*argv): print(x) print(argv) fun(1,2,3,4,5,6,7)
运行结果:
1
(2, 3, 4, 5, 6, 7)
def fun(**kwargs): #**kwargs把N个关键字参数,转换成字典的方式存储
print(kwargs)
print(kwargs['name'])
print(kwargs['age'])
fun(name='xiaolaizi',age = '21') #两种参数传递方式之一
fun(**{'name':'wei','age':8}) #两种参数传递方式之二
运行结果:
{'name': 'xiaolaizi', 'age': '21'}
xiaolaizi
21
{'name': 'wei', 'age': 8}
wei
8
def fun(name,**kwargs): #跟关键字参数叠加
print(name)
print(kwargs)
fun('xiaolaizi',age=18)
运行结果:
xiaolaizi
{'age': 18}
4、局部变量与全局变量
age = 8 #全局变量 def change_name(name): #global age #申请全局变量(不要用,别入坑) age = 20 print("before change",name,age) name = "xiaolaizi" #局部变量,这个函数就是变量的作用域 print("after change", name) name = "datou" change_name(name) print(name,age) print(age) 运行结果: before change datou 20 after change xiaolaizi datou 8 8
对比: age = 8 #全局变量 def change_name(name): global age #申请为全局变量(不要用) age = 20 print("before change",name,age) name = "xiaolaizi" #局部变量,这个函数就是变量的作用域 print("after change", name) name = "datou" change_name(name) print(name,age) print(age) 运行结果: before change datou 20 after change xiaolaizi datou 20 20
5.递归
在函数内部,可以调用其他函数,如果一个函数在内部调用本身,这个函数就是递归函数。
特性:
a.必须有明确的结束条件;
b.每次进入更深一层 递归时,问题规模相比上次递归都应有所减少;
c.递归效率不高,递归层次过多会导致栈溢出。
6. 函数式编程
定义:
简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
例子:
函数式编程中最古老的例子莫过于1958年被创造出来的LISP了,透过 LISP,可以用精简的人力。较现代的例子包括 Haskell、Clean、Erlang和Miranda等。(引用自百度百科)
7. 高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def add(x,y,f):
return f(x) +f( y)
res = add(3,-6,abs) #把绝对值函数传给了f
print(res)
补充:
小技巧:Ctrl+/ :全部注释。