| Python | PHP |
函数调用 | abs() | abs() |
数据类型转换 | int()、float()、str()、bool() | intval()、(int) |
可变函数 | a = abs print(a(-1)) | function test($a){ return abs($a); } $a = "test"; echo $a(-2); |
函数定义 | def test(x): if x>0: return x else: return -x print(test(-10)) |
|
return | 会结束整个函数体 直接写return返回none |
|
空函数
pass可以作为占位符使用,使空函数不报错正常执行 | def nop(): pass |
|
数据类型检查 | isinstance(object, classinfo) classinfo (tuple,dict,list,int,float等) | is_int() |
多元素返回 实际返回一个元组tuple,省略括号 | def test(): return a,b 接收x,y = test() 按tuple的顺序接收 |
|
| Python | PHP |
函数参数 | 位置参数外,还可以使用默认参数、可变参数和关键字参数 | 位置参数、默认参数 |
位置参数 (必须) | def test(x): return x*x | function test(x){ return x*x; } |
默认参数 (默认值)
当不按顺序提供部分默认参数时,需要把顺序改变的参数名写上。 test(n=3,x=3)
默认参数必须指向不变对象,例如None | def test(x,n=2): sum = 1 while n>0: sum = sum * x n = n - 1 return sum | function test(x=2){ return x*x; } |
可变参数 不确定参数个数时使用 自动组装成tuple | def allow_change(*numbers): sum = 0 for i in numbers: sum = sum + i*i return sum print(allow_change(1,2,3))
如果参数是一个list或tuple list = [1,2,3] print(allow_change(*list)) |
|
关键字参数 0个或任意个含参数名的参数 自动组装成dict | def keyword(**kw): return kw print(keyword(name= "tony"))
如果参数是一个dict dict = [1,2,3] print(keyword(**dict)) 函数内部的操作不会影响到外部 |
|
命名关键字参数 (限制关键字参数) 必须写参数名 可以含默认参数 | def limit(name, *,age): return name,age print(limit("mary",age=18)) *号后面的为限制输入命名参数 可变参数后面接命名关键字参数可以不用再写一次*号 输入其他变量的时候就会报错 |
|
| Python | PHP |
递归 | def fact(n): if n==1: return 1 return n * fact(n - 1) print(fact(4)) |
|
尾递归 | def fact(n): return fact_iter(n, 1)
def fact_iter(num, product): if num == 1: return product return fact_iter(num - 1, num * product)
|
|
汉诺塔 | def move(n,a,b,c): if n==1: print(a, '-->', c) else: move(n - 1, a, c, b) move(1, a, b, c) move(n - 1, b, a, c)
print(move(3, 'A', 'B', 'C'))
如果A上面只有一个,直接放到C上,如果不止一个,先把一个上面的全放到B,然后把一个放到C,然后把B上的放到C |
|