python-while-函数

发布时间:2019-03-07 20:01:56编辑:auto阅读(1857)

      1. while循环(只有在条件表达式成立的时候才会进入while循环)
        while 条件表达式:
          pass

        while 条件表达式:
          pass
        else:
          pass
        不知道循环次数,但确定循环条件的时候用while

        # 如果说年利率是6%,存入1000到第几年本钱翻倍 
        1 money = 10000 2 year = 0 3 while money < 20000: 4 money = money*(1+0.06) 5 year += 1 6 print('第 {0} 年本钱翻倍了,总共有 {1} 元'.format(year,money))
        1. 函数 :一个函数实现一个功能
          规则:def  函数名([形参]):
                    pass
          命名规则:注意不要使用大驼峰,默认小驼峰,大驼峰命名只用于类的命名
            1.函数的参数与返回值        返回值:函数执行的结果
            1. 函数参数的定义与使用

              def hello(name):
                  print("你好吗,{}".format(name))
                return "函数中止执行,后面不管有多少句代码都不会被执行"
                print("这句话不会被执行")
              person = 'Tom'
              hello(person)

              rst = hello("John") #函数也可以这么调用,如果有返回值会将返回值赋值给变量

              函数的返回值

                表示函数执行的结果,如果函数中没有return系统自动返回None,函数一旦执行return语句,则无条件返回,意味着return下面的语句将不再执行,只要遇到return,函数自动中止执行。
              参数详解:普通参数 默认参数 收集参数 关键字参数
                - 普通参数:定义的时候直接定义变量名,平时用的最多的参数
                                def 函数名(参数1, 参数2, ....):
                            调用: 函数名(参数1, 参数2, ...)
                - 默认参数: 函数中默认给定义好的参数,参数有默认值
                                def 函数名(value1, canshu = value2):  其中的canshu = value2 就是默认参数,典型的例子就是 print(value1, value2, ...,sep=" ", end= '\n',..)
                 调用的时候,如果没有特殊要求 ,默认参数可以不用进行传值
              def hello(name, gender = 'boy'):
                  if gender = 'boy':
                      print("welcome,{0},you are a good {1}".format(name, gender))
                  else:
                      print("welcome,{0},you are a good {1}".format(name, gender))
              
              hello('Tom')
              hello('Siri', 'girl')

                - 关键字参数:注意与默认参数区分,好处就是实参与形参位置可以不用一一对应
                             def fun(p1=v1, p2=v2, ...):
                                     pass
                            fun(p1=value1, p2=value2, ....)

          def student(name=None, age=None, gender=None):
              print("我是一个学生,我的名字是 {0}, 我今年 {1} 岁, 我是个 {3}生")
          
          name = 'Tom'
          age = 12
          gender = ''
          student(age=age, gender=gender, name=name)

                               - 收集参数:
                                       把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
                                        def fun(*args):
                                            pass
                                     调用:fun(p1, p2, p3, ...)
                                  参数名可以不用 args,但推荐这么用,约定俗成. 注意前面的 " * " 不能省略, 调用的时候可以不传入参数值
                                  收集参数传参的时候不能直接传入关键字参数,例如 fun(name='Tom'Z)

          def stu( *args ):
              print("大家好, 简单自我介绍一下:")
              for i in args:
                  print(i, end='=>')
          
          stu("小明", 18, "山东省")
          stu('小红')

                        - 收集参数之关键字收集参数
                                 把关键字参数以字典的形式放入收集参数, 访问kwargs需要用访问字典的方式
                                          def fun( **kwargs ):
                                             pass
                                    #调用
                                     fun(p1=v1, p2=v2, ....)
                                 

        2. 各种类型参数混合使用的顺序问题:
           使用的规则一般是:普通参数 关键字参数优先 
          定义的时候一般找普通参数 , 收集参数(args),关键字参数, 收集参数(kwargs)
          def stu(name, age, *args, hobby='没有', **kwargs):
              print('大家好')
              print("我叫 {0}, 我今年 {1} 大了.".format(name, age))
              if hobby == '没有':
                  print('我没有爱好')
              else:
                  print("我的爱好是{0}".format(hobby))
              for i in args:
                  print(i)
              for k, v in kwargs.items():
                  print(k, ' ------', v)
          
          
          name = 'tom'
          age = 19
          
          stu(name, age, '王晓静', '小红', hobby='sing', addr='beijing', phone='123213')
          def stu(**kwargs):
                 print(大家好,我先自我介绍一下)
                 # 对于字典的访问,Python2 与 Python3 有区别
                 for k,v in kwargs.items():
                     print(k,'--------', v)
          stu(name='wangxiaojjing', age=10, addr='北京')   

          收集参数的解包问题(unpack)
          - 把参数放入list或者dict中,直接把list/dict中的值放入收集参数中
          def stu(*args):
            for i in args:
          print(i)
          l = list()
          l.append('aafd') # 在列表的最后插入值
          l.append(1321)
          stu(l) # 打印的结果是['aafd', 1321] 不是理想中的结果
          stu(*l) # 解包符号 * 加上以后就是理想中的结果

          对于dict类型的收集参数一样可以解包,但是需要加两个 *,


          ## 返回值
          函数和过程的区别就是: 有无返回值,如果函数中没有显式返回值,即return value 则默认返回None
          例如:
          def func1():
          print('aaa')
          return 1

          def func2():
          print('a')

          f1 = func1() # 结果是 1
          f2 = func2() # 结果是 None
          建议所有的函数不管有没有返回值在最后都加上一个return

          # 函数文档
          - 用来解释函数的作用以及利用方式
          - 文档的写法:
          在函数内部开始的第一行使用三引号括起来
          一般具有特定格式
          例如
          def stu(name, age):
          '''这是
          文档
          '''
          print(name, age)
          return None
          - 查看文档的方式: 使用help(函数名)
          使用 函数名._doc_

关键字