zoukankan      html  css  js  c++  java
  • 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

















  • 相关阅读:
    怎么查看京东店铺的品牌ID
    PPT编辑的时候很卡,放映的时候不卡,咋回事?
    codevs 1702素数判定2
    codevs 2530大质数
    codevs 1488GangGang的烦恼
    codevs 2851 菜菜买气球
    hdu 5653 Bomber Man wants to bomb an Array
    poj 3661 Running
    poj 1651 Multiplication Puzzle
    hdu 2476 String Painter
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9691518.html
Copyright © 2011-2022 走看看