廖雪峰python学习笔记7:函数

#python有很多内置函数
#如abs(), max(1,2,3,4), int('123'), float('12.34'),
#str(12.3), bool(1), hex()

#定义函数
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
    
#调用
print(my_abs(-1))
#如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,
#用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名)

#空函数
def nop():
    pass
#pass还可以用在其它语句里
age = 0
if  age >= 18:
    pass

#!!!函数返回多个值
import math

def move(x, y, step, angle = 0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx,ny

a = [move(1,2,3,4)]
print(a)
#原来返回值是一个tuple!

#定义默认参数要牢记一点:默认参数必须指向不变对象!
def add_end(L=[]):
    L.append('END')
    return L
print(add_end())
print(add_end())
print(add_end())
#结果:
#['END']
#['END', 'END']
#['END', 'END', 'END']
#这就尴尬了,它其实在第一次调用的时候,建立了一个list L

#所以,定义默认参数要牢记一点:默认参数必须指向不变对象!
def add_end2(P=None):
    if P is None:
        P = []
    P.append('END')
    return P
print(add_end2())
print(add_end2())
print(add_end2())

#可变参数函数,允许你传入0个或任意个参数, 参数前面加*
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
print(calc(1,2,3))

#很方便的关键字参数,(检查是否有city和job参数)参数和缺省值
def person(name = 'UNKNOWN', age = 'UNKNOWN', **kw):
    if 'city' in kw:
        #有city参数
        print('city found!!!')
    if 'job' in kw:
        #有job参数
        print('job')
    print('name:', name, 'age:', age, 'other:', kw)
person('Leo', 19, city='Wuhan', addr='Gansu', zipcode=745000)
print(person())

#参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
#比如说:如果缺少*,Python解释器将无法识别位置参数和命名关键字参数

#递归函数
#递归计算阶乘
def cal(a):
    if a == 1:
        return a
    return a * cal(a - 1)
#递归计算5050
def cal_2(b = 100):
    if b == 1:
        return 1
    return b + cal_2(b - 1)

print(cal(3))
print(cal_2(100))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值