您的位置:首页 > 编程语言 > Python开发

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

2018-05-07 14:35 423 查看
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 )#current 当时的
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个位置参数,转换成元组形式
如果实参有很多个 形参不方便定义可以用* 比如*args 关键是以*开头
# 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐