Python_day2:函数

 

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))

 

如果参数是一个listtuple

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

 










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章