新手Python学习记录Day5

函数

def sayhi():
    print('Hello World!')
sayhi()

def calc(x,y):
    res = x*y
    return res
c = calc(3,2)

def stu_register(name,age,country='CN'): #参数默认值
    print(name,age,country)
stu_register('zhangsan',22,'England')
stu_register('lisi',25)
stu_register(age = 21, name = 'wangwu') #如果不按顺序,需要指明参数

函数非固定参数

*args

def stu_register(name,age,*args): #*args会把传入的参数一起变成一个元组的形式
    print(name,age,args) #调用时不加*
stu_register('lisi',25)
stu_register('zhangsan',22,'England','python')
'''
----输出----
lisi 25 ()
zhangsan 22 ('England', 'python')
'''

**kwargs

def stu_register(name,age,*args,**kwargs): # **kwargs把传入的参数变成字典形式
    print(name,age,args,kwargs)
stu_register('lisi',25)
stu_register('zhangsan',22,'England','python')
stu_register('wangwu',23,'CN','python',sex = 'male',province = 'Beijing')
'''
---输出---
lisi 25 () {}
zhangsan 22 ('England', 'python') {}
wangwu 23 ('CN', 'python') {'province': 'Beijing', 'sex': 'male'}
‘’‘

嵌套函数

name = 'lisi'
def change_name():
    name = 'zhangsan'

    def change_name2():
        name = 'wangwu'
        print('3层打印',name)
        
    change_name2() #调用内层函数
    print('2层打印',name)
    
change_name()
print('外层打印',name) #不能在外层调用内层函数
'''
3层打印 wangwu
2层打印 zhangsan
外层打印 lisi
'''

递归函数

def calc(n):
    print(n)
    if int(n/2) == 0:
        return n
    return calc(int(n/2))

calc(10)

二分查找

data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35]
def bi_search(dataset,find_num):
    dataset.sort()
    if len(dataset)/2 >1:
        mid = int(len(dataset)/2)
        temp_num = int(dataset[mid])
        if find_num == temp_num:
            print('找到数字',dataset[mid].index)
        elif find_num < temp_num:
            print('\033[31;1m找的数字在mid[%s]左边\033[0m' %temp_num)
            return bi_search(dataset[0:mid],find_num) #不需要-1,因为切片是左闭右开[)
        else:
            print('\033[31;1m找的数字在mid[%s]右边\033[0m' %temp_num)
            return bi_search(dataset[mid+1:],find_num)
    else:
        if dataset[0] == find_num:
            print('找到数字')
        else:
            print('没找到')
    return 

匿名函数

#不需要显式的指定函数
def calc(n):
    return n**n
print(calc(10))

#换成匿名函数
calc = lambda n:n**n
print(calc(10))

与其它函数搭配使用

res = map(lambda x:x**2,[1,3,5,7])
for i in res:
    print(i)

高阶函数

#变量可以指向函数,函数的参数能接受变量,函数也可以接受另一个函数作为参数
def add(x,y,f):
    return f(x) + f(y)

res = add(3,-6,abs)
print(res)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值