#函数定义
def f():
print('love Q')
f()
##参数
#形参和实参
def add(a,b):
print(a+b)
add(7,5)
def print_info(name,age):
print('name:%s' % name)
print('age:%d' % age)
print_info('xia',21) #必须参数
print_info(age = 20,name = 'qiu') #关键字参数
#默认参数,
def print_info(name,age,sex='male'):
print('name:%s'%name)
print('age:%d'%age)
print('sex:%s'%sex)
print_info('xia',21)
print_info('qing',20,'female')
#不定长的的参数,用个*加一个变量名是保存在元组里面,**两个是在字典里面
def print_info(*args,**kwargs):
for i in args: #这个是元组
print(i)
for x in kwargs: #这个是字典
print(x,kwargs[x])
print_info('xia',21,'male',job='it',lover='qing') 位置不能错
把列表的各个元素传进去,在列表前面加个* ,eg:*[1,2,3]
把字典的各个元素传进去,在字典前面加**,eg:**{'name':'xia','lover':'q'} ##在后面的jango会经常使用
#这里默认参数放左边
def print_info(sex='male',*args,**kwargs):
print(sex)
for i in args:#这个是元组
print(i)
for x in kwargs:#这个是字典
print(x,kwargs[x])
print_info('female','xia',21,'male',job='it',lover='qing')
##return
和其他语言基本一样
不同的是,python可以返回多个对象,只是放在元组里面
##高阶函数(假的):函数的形参有函数,通过函数调用函数
def my_func(a,b,f):
return f(a)+f(b)
def f(n):
return n * n
print(my_func(3,4,f))
函数名也是一个变量,可以赋值给其他变量
###作用域
LEGB
x=int(2.9) #built_in
局部变量不能改变全局变量,要改变就+Global
嵌套作用域的的使用nonlocal关键字
函数的阶乘与递归,因为和c语言还有Java都是一样,我很清晰,所以就不再总结了,重在使用,经典:汉诺塔问题。
递归注意,必须有一个结束条件
##内置函数
python里面就有的函数
#filter(function, iterable) 函数 #实现对迭代器过滤
#map函数实现对迭代器的操作
str=['q','h']
def func(s):
return''.join([s,'xia'])
ret=map(func,str)
print(list(ret))
#reduce函数
from functools import reduce
def add1(x,y):
return x+y
print(reduce(add1,range(1,11))) ##实现的过程是先取前面两个操作,然后返回去,再从里取两个操作
也可以实现阶乘
#lambda函数
a=1;b=2
mysum=lambda a,b: a+b #实现了a+b,用法lambda+空格+参数+冒号+空格+操作
和reduce配合使用