python小白成长日记 day 5 函数 局部变量 递归 高阶函数

def name1():#def定义函数  name 是函数名字
    '''文件注释'''# 注意这一步是一个好习惯  一般都要写上
    print('in the name1')
    return 0
def name2():
    print('in the name2')
    #如果不加return  打印的结果是none
x=name1()
y=name2()
print('from name1 return is %s'%x)
print('from name2 return is %s'%y)
 
 
 
 
import time#导入模块
def logger():#记录器 定义一个logger 是下面的with可以多次使用
    #当有多个数据的时候 更方便使用
    time_format='%Y-%m-%d %X'#time_forma定义你的时间格式 Y年m月d日 X小时分钟秒
    time_current=time.strftime(time_format )
    with open('a.txt','a+')as a:
        a.write('%s end action 哈哈 \n'%time_current   )
def test1():
    print('test1 starting action...')
    logger()
def test2():
    print('text2 starting action...')
    logger()
def test3():
    print('text3 starting action...')
    logger()
test1()
test2()
test3()
logger 代码的重复利用
 
 
def name1():
    print('in the  name1')

def name2():
    print('in the  name2')
    return 0
def name3():
    print('in the  name3')
    return 1,'han',['bin','long'],{1:2}
x=name1()
y=name2()
z=name3()
print(x)
print(y)
print(z)#最后会返回一个综合的元组

 
 
def name1(x,y):
    print(x)
    print(y)
name1(1,3) #如果()中不写会报错 少了参数
#def中的()的数量要与最后name1中的()中的数相对应
def name2(x,y):
    print(x)
    print(y)
x=1
y=2
name2(y=2,x=1)#与形参位置无关
# 注意()可以这样写(3,y=2)但是不能写(y=2,3)不管有几个量 y=?要放到最后
def name(x,y=2):
    print(x)
    print(y)

name(1)
#默认参数特点:调用函数的时候,默认参数非必须传递
#用途:1.默认安装2.连接数据库
#*args:接受N个位置参数,转换成元组形式
# def test(*args):
#     print(args)
# test(1,2,3,4,5,5)
# test(*[1,2,4,5,5])
# test(1,1,1,1,1,1)#  args=tuple([1,2,3,4,5])

# def test1(x,*args):
#     print(x)
#     print(args)
#
# test1(1,2,3,4,5,6,7)


#**kwargs:接受N个关键字参数,转换成字典的方式
# def test2(**kwargs):
#     print(kwargs)
#     print(kwargs['name'])
#     print(kwargs['age'])
#     print(kwargs['sex'])
# test2(name='alex',age=8,sex='F')
# test2(**{'name':'alex','age':8,'sex':'F'})


# def test3(name,**kwargs):
#     print(name)
#     print(kwargs)
# test3('alex',age=18,sex='m')

# def test4(name,age=18,**kwargs):
#     print(name)
#     print(age)
#     print(kwargs)
# test4('alex',age=34,sex='m',hobby='tesla')

def test4(name,age=18,*args,**kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)
    logger("TEST4")
def logger(source):
    print("from %s" %  source)
test4('alex',age=34,sex='m',hobby='tesla')
#局部变量  只改变局部的值
def change_name(name):
    global school  #globe局部变量
    school = "Mage Linux"
    print("before change",name,school)
    name ="Alex li" #这个函数就是这个变量的作用域
    age =23
    print("after change",name)
name=('hanbinlong')
change_name(name)
print(name)
    
def calc(n):
    print(n)
    if int(n/2) >0:
        return calc( int(n/2) )
    print("->",n)


calc(10)

递归特性:

1 必须有一个明确的结束条件

2每次进入一个更深的递归中  问题模式的数量要有一定的减少

def add(a,b,f):
    return f(a)+f(b)

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

猜你喜欢

转载自blog.csdn.net/weixin_42121899/article/details/80222164