python_day14_函数_返回值_局部和全局变量

    快到中秋节了,貌似又不能在家陪爸妈过节了,想想这已经是五年没有在家过中秋节了吧,忽然还挺想念的,我知道我爸妈是很节俭的那种家长,所以我也不差,但是每每想到这些,心里总会有很大的愧疚在里面,毕竟我自己也不小了,本来该孝敬爸妈的年纪,这个暑假还给他们添加了不少的麻烦。所以我在这里,一直很努力的写东西、写专利,并不是我希望自可以有多出人头地,只是希望自己有能力去孝敬他们,中秋节了快乐,爸妈。

函数笔记

  

#Author:"haijing"
#date:2018/9/22

# def print_info(name,age):
# print('Name: %s' %name)
# print('Age: %d' %age) #刚刚的占位符用%s也可以
# print_info('xiaohu',39) #顺序参数
# print_info(age=39,name='xiaohu') #关键字参数。这样调用实参也可以

#默认参数
# def print_info(name,age,sex):
# print('Name: %s' %name)
# print('Age: %d' %age) #刚刚的占位符用%s也可以
# print('Sex: %s' %sex)
# print_info('Xiaohu',39,'男')
# print_info('Jinxing',40,'男')
# print_info('Zhangmin',20,'男') #因为这里性别都是男,所以这里可以简写如下


# def print_info(name,age,sex='男'):
# print('Name: %s' %name)
# print('Age: %d' %age) #刚刚的占位符用%s也可以
# print('Sex: %s' %sex)
# print_info('Xiaohu',39,)
# print_info('Jinxing',40)
# print_info('Zhangmin',20) #这里即可不再加第三个参数
# print_info('Anran',18,'女') #有特殊的可以再追加上去第三个参数

#不定长参数
# def add(x,y):
# print(x+y)
# add(1,2) #这个加法器有不足,参数必须是两个相加,不能是三个

#高大上加法器
# def add(*x): #在形式参数之前加一个星号,即为不定长参数,这时调用add()时,可以直接为add()添加实际参数,不用为每个参数添加名字
# print(x) #x此时为一个元组
# sum = 0
# for i in x:
# sum += i
# print(sum)
# add(1,2,3,4,5)
# add(1,2,3,4,5,6,7)


# def print_info(*arg,**kwargs): #在形式参数之前加两个星号,即为不定长参数,这时调用add()时,可以直接为add()添加实际参数,有需要添加名字的参数,可以加上名字
# print(arg) #一个元组,打印('haijing', 18, 'male')
# print(kwargs) #一个字典,打印{'job': 'IT', 'hobby': 'girls', 'heigt': 165}
# for j in arg:
# print(j)
# for i in kwargs:
# print('%s:%s' %(i,kwargs[i])) #因为kwargs是一个字典,所以如果直接写print(i),这时只能打印字典的键(job,hobby,height),kwargs[i]才为字典的值
# print_info('haijing',18,'male',job='IT',hobby='girls',heigt=165)
#其中*arg是为'haijing',18,'male'这三个无变量名的参数设置的,**kwargs是为job='IT',hobby='girls',heigt=165这三个有变量名的参数设置的
#所以'haijing',18,'male'会传到arg中去,job='IT',hobby='girls',heigt=165会传到kwargs中去
#但是最好是将无变量名的放在一个,有变量名的放在一起,不能穿插在一起,否则会报错


def print_info(sex='male',*arg,**kwargs): #在形式参数之前加两个星号,即为不定长参数,这时调用add()时,可以直接为add()添加实际参数,有需要添加名字的参数,可以加上名字
print(sex) #一个元组,打印('haijing', 18, 'male')

print_info() #此时不加参数,不会报错
print_info('female',1,2,3)
print_info(1,2,3,'female') #此时会将1传给sex,2,3,female这三个没有名字,所以会传给arg

函数_返回值:
#Author:"haijing"
#date:2018/9/22

# def func():
# print('ok')
# return 'abc' #返回值可以是数字,字符串
# print('haijing') #执行完return之后,函数定义就结束了,所以不会执行这一句
# s=func() #接受返回值abc
# print(s) #打印abc


# def add(*args):
# sum = 0
# for i in args:
# sum += i
# a=add(1,2)
# print(a) #因为此时没有写return 所以这里默认返回None,所以这里打印None


# def add(*args):
# sum = 0
# for i in args:
# sum += i
# return sum #刚刚把return写到for循环里边去了,导致只能执行一遍for循环
# a=add(2,3)
# print(a) #因为此时没有写return 所以这里默认返回None,所以这里打印None


#也可以返回多个对象
# def func():
# return 1,2,'haijing'
# print(func()) #打印一个元组(1, 2, 'haijing')

函数_作用域:
#Author:"haijing"
#date:2018/9/22


# if True:
# x=3
# print(x) #这个没错
#
# def f():
# a=10 #局部变量,只能在这个函数中调用a,出去这个就不行了
# print(a) #因为a是在上面那个函数定义的,所以这里a会显示没定义


#
# count = 10 #定义全局变量
# def outer():
# print(count)
# count=5 #这样定义局部变量不对,因为上边一句print(count),已经将全局变量引入函数中来了,故不能修改全部变量的值,会报错
# print(count)
# outer()

#有错误的
# count = 10 #定义全局变量
# def outer():
# count=5 #这样定义局部变量不对,因为局部变量不能修改全部变量的值,会报错
# print(count) #打印5
# outer()

#有错误的
# count = 10 #定义全局变量
# def outer():
# count=count+1 #这样定义局部变量不对,因为局部变量不能修改全部变量的值,会报错
# print(count)
# outer()

#不会报错的
# count = 10 #定义全局变量
# def outer():
# global count #表示这里的count为全部变量
# count=count+1
# print(count)
# outer()

#函数定义嵌套
# def outer():
# count = 10 # 定义局部
# def inner():
# nonlocal count #表示这里的count为全部变量,这里不加这一句也不会报错
# count=count+1
# print(count)
# inner()
# print(count)
# outer()


昨天的没有去写博客:
#改进,在函数里面调用函数
# def logger(n):
# with open('日志目录','a') as f: #执行这一句之后,若没有这日志目录这个文件,变回自动在day14目录下自动的创建日志目录.txt这个文件
# f.write('end action %s\n' %n)
# def action1(m1):
# print('starting action1...')
# logger(m1)
#
# def action2(m2):
# print('starting action2...')
# logger(m2)
# def action3(m3):
# print('starting action3...')
# logger(m3)
# action1(1)
# action2(2)
# action3(3)

#写东西到日志目录之后,需要知道是什么时间加进去的,用time这个模块
import time #time模块
def logger(n):
time_format = '%Y-%m-%d %X' #定义一个时间格式 会这样2018-09-22 20:32:11显示时间
#time_format = '%y-%m-%d %x' #会这样2018-09-22 09/22/18 显示时间
time_current = time.strftime(time_format) #调用time这个时间模块,time_current只是一个变量
with open('日志目录','a') as f: #执行这一句之后,若没有这日志目录这个文件,变回自动在day14目录下自动的创建日志目录.txt这个文件
f.write('%s end action %s\n' %(time_current,n)) #因为在这句中有两个占位符 %s,所以(time_current,n)这里要加一个括号,组成一个元组

def action1(m1):
print('starting action1...')
logger(m1)

def action2(m2):
print('starting action2...')
logger(m2)

def action3(m3):
print('starting action3...')
logger(m3)

action1(1)
action2(2)
action3(3)

hiajing in hz
miss you min
2018.9.22

















猜你喜欢

转载自www.cnblogs.com/YiYA-blog/p/9691518.html