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

函数笔记


#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