#函數定義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 ...
#函數定義
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配合使用