def Whichbig(a,b,c):
x=(max(a,b,c))
return x
投机取巧打个包装,当然做一个比较还是很简单的没事试试吧
对于一个空函数
def MyNull():
pass
意味着什么都不做,在以后的大型编程中可能是意味着在这里留一个接口,供后续使用
import math
是一个导包的过程形同于C的 - include又有所不同,真要说像的话是和java的packge是一样的 道理
返回多个值,当然在外面你的类型要是一样,要可以接受这些返回值例如元组,列表。这在爬虫中经常使用
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
def add_list(L=[]):
L.append('ONE')
return L
这是有错的,会出现不可预知的后果,因为不能总是得到你想要看到的结果,原因就是因为参数是不可预知的
- 对于可变参数的问题,有这么几种解决方法,一个是给函数中传递list或者tuple对象,一种是函数参数对象添加*号,例如*nums,这样的感觉就是C中的指针但是在python中是没有指针的
这样就解决了可变长参数的问题
def GetNums(*nums):
print (nums[0])
GetNums(0)
def MyFamilyMem(name,age,**Familynote):
print(name,age,Familynote)
MyFamilyMem("Bob",15,sex='boy')
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3)); - 关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数不要忘了写分隔符*,否则定义的将是位置参数
对于递归函数
def fact(n):
if n==1:
return 1
return n*fact(n-1)
def factextern(n):
return fact_iter(n,1)
def fact_iter(num,prodect):
if num==1:
return prodect
return fact_iter(num-1,num*prodect)
Listone=[]
for i in range (1000):
Listone.append(i)
print (Listone)
Listone=list(range(100)) - 初始化的简便方式
print(Listone[2:50]) - 这就是切片
Listone[:50] - 省略了开头
Listone[20:] - 省略了结尾
print (Listone[20::2])
print (Listone[-10:])
tupleone=tuple(range(100))
print(tupleone[10:15]) - 对于列表和元镞都可以使用切片技术
for x,y in ((1,1),(2,4)):
print (x,y)
L=[]
for i in range(100):
L.append(i*i)
[x*x for x in range (199)]
Listtwo=[i*i for i in range(10,50,2) if i%5==0]
print (Listtwo)
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
intA=max(1,2,3,4,5,6)
maxA=max
intB=maxA(1,4,5,6,7,8)
print(intA,intB)
def add_My(x,y,f):
return f(x^2,y)+f(y^2,x)
print (add_My(10,2,max))
def f(x):
return x*x
r=map(f,[1,20,40,5,3,2,3,42])
list (r)
- 对于reduce
from functools import reduce
def add_reduce(x,y):
return x+y
a=reduce(add_reduce,[1,2,7,4,3,5])
print (a)
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
def str2int(s):
return reduce(lambda x, y: x * 10 + y, map(char2num, s))
def is_palindrom(n):
return n == int(str(n)[::-1]) - 进行一个回文数的判断,就是将整数转化为字符串,然后进行一一判断
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def sort_byname(t):
return t[0]
def sort_byscore(t):
return t[1]
La=sorted(L,key=sort_byname)
print (La)
Lb=sorted(L,key=sort_byscore,reverse=1)
print(Lb)
def count():
def f(j):
def g():
return j*j
return g
fs=[]
for i in range(1,4):
fs.append(f(i))
return fs
def add(x,y):
return lambda : x^3+y^3
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
#对于functool中的偏函数模块而言,其目的是为了简化函数
int2=functools.partial(int,base=2)
numone=int2('1001')
print(numone)
基本上函数的部分就到这里了