• 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)
    # 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 ' %(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

















  • 相关阅读:
    总结的CSS简写表
    ASP.net 2.0:我还有多少秘密你不知道?(1)
    判断自然数的阶乘大于等于400,然后计算此数的平方,再一次减1计算其平方和,直到数字减小到0(演示Exit DO)
    JSP留言板程序开发过程
    double>string的时候,如何保留两位小数?
    asp如何清除html代码
    利用ASP.NET来访问Excel文档
    C#日期函数所有样式大全
    ASP.net在线购物商城系统完全解析
    创立公司的准备
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9691518.html
Copyright © 2020-2023  润新知