zoukankan      html  css  js  c++  java
  • Python Third Day-函数

    '''
    1 为什么要有函数?没有函数带来的困扰?
        组织结构不清晰,可读性差
        代码冗余
        可扩展性差
    
    2 什么是函数
        具备某一个功能的工具---》函数
    
        事先准备工具-》函数的定义
        拿来就用、重复使用-》函数的调用
        ps:先定义后调用
    
    3 函数的分类:
        内置函数:len,max(10,11),help(函数名)
        自定义函数:def
            语法:
                def 函数名(参数1,参数2,...):
                    """注释"""
                    函数体
                    return 返回值
           函数名()#就可以调用
    '''
      1 #'函数即是变量'
      2 # def print_tag():
      3 #     print('*'*20)
      4 #
      5 # def print_msg(): #print_msg=<function print_msg at 0x00000000027EA8C8>
      6 #     print('hello world')
      7 #
      8 #
      9 # # print(print_msg)
     10 # # print(print_tag)
     11 #
     12 # print_tag()
     13 # print_msg()
     14 # print_tag()
     15 
     16 
     17 
     18 #2、定义函数阶段都发生了什么事:只检测语法,不执行代码
     19 #定义阶段
     20 # sex='male'
     21 # def auth():
     22 #     sex#引用变量名
     23 #
     24 #     name=input('name>>: ').strip()
     25 #     password=input('password>>: ').strip()
     26 #     if name =='egon' and password == '123':
     27 #         print('login successfull')
     28 #     else:
     29 #         print('user or password err')
     30 #
     31 # #调用阶段
     32 # auth()
     33 
     34 
     35 #3、函数的使用:先定义后调用
     36 
     37 # def bar():
     38 #     print('from bar')
     39 #
     40 # def foo():
     41 #     print('from foo')
     42 #     bar()
     43 #
     44 # foo()
     45 
     46 # #定义阶段
     47 # def foo():
     48 #     print('from foo')
     49 #     bar()
     50 #
     51 # def bar():
     52 #     print('from bar')
     53 #
     54 # #调用阶段
     55 # foo()
     56 
     57 
     58 # # 定义阶段#这个地方就不行,定义阶段没有bar()
     59 # def foo():
     60 #     print('from foo')
     61 #     bar()
     62 #
     63 # # 调用
     64 # foo()
     65 #
     66 # def bar():
     67 #     print('from bar')
     68 #
     69 
     70 
     71 
     72 
     73 
     74 
     75 #4 定义函数的三种形式
     76 #第一种:无参函数
     77 #第二种:有参函数#函数体依赖外界传入的值
     78 #第三种:空函数
     79 
     80 # def auth():
     81 #     name=input('name>>: ').strip()
     82 #     password=input('password>>: ').strip()
     83 #     if name =='egon' and password == '123':
     84 #         print('login successfull')
     85 #     else:
     86 #         print('user or password err')
     87 #
     88 
     89 # def my_max(x,y):#有参函数
     90 #     if x >= y:
     91 #         print(x)
     92 #     else:
     93 #         print(y)
     94 #
     95 # my_max(1,2)
     96 
     97 
     98 
     99 # def auth(name,password):
    100 #     if name =='egon' and password == '123':
    101 #         print('login successfull')
    102 #     else:
    103 #         print('user or password err')
    104 #
    105 # def interactive():
    106 #     name=input('name>>: ').strip()
    107 #     password=input('password>>: ').strip()
    108 #     auth(name,password)
    109 #
    110 # interactive()
    111 
    112 
    113 #定义空函数
    114 def auth():
    115     pass
    116 
    117 def put():
    118     pass
    119 
    120 def get():
    121     pass
    122 
    123 def ls():
    124     pass
    函数返回值
     1 #return的特点:
     2 #1、 函数内可以有多个return,但是只能执行一次return
     3 #2、 执行return函数就立刻结束,并且return的后值当做本次调用的结果返回
     4 # def foo(x,y):
     5 #     return x+y
     6 #
     7 # res=foo(1,2)
     8 例:返回值
     9 #res=print('hello')
    10 #print(res)#这个地方输出的是hello和none,print('hello')没有返回值所以是none
    11 #
    12 例:返回值2
    13 # def foo(x,y):
    14 #     pass#没有return定义返回值,如果return写上x+y,返回值就是3了
    15 #
    16 # res=foo(1,2)
    17 #print(res)#上面没有定义返回值所以就是none
    18 
    19 # def my_max(x,y):
    20 #     if x >= y:
    21 #         return x
    22 #     else:
    23 #         return y
    24 #
    25 # res=my_max(1,2)
    26 # print(res)
    27 
    28 # def foo():#有多个return,只执行第一个
    29 #     print('first')
    30 #     return 1
    31 #     print('second')
    32 #     return 2
    33 #     print('third')
    34 #     return 3
    35 #
    36 # res=foo()
    37 # print(res)
    38 
    39 
    40 
    41 
    42 #1、返回的值没有类型限制
    43 # def bar():
    44 #     print('from bar')
    45 #
    46 # def foo():
    47 #     return bar
    48 # print(foo() is bar)
    49 
    50 #2:return返回值的个数
    51 #2.1: 没有return:默认返回None
    52 #2.2return 值:值本身
    53 #3.3return 多个值:返回一个元组
    54 
    55 # def foo():
    56 #     pass
    57 #     return 1,'a',[1,2]
    58 # print(foo())
    59 
    60 
    61 #函数调用的三种形式
    62 def my_max(x,y):
    63     if x >= y:
    64         return x
    65     else:
    66         return y
    67 
    68 # res1=my_max(1,2)
    69 
    70 # res2=my_max(1,2)*10
    71 
    72 # res3=my_max(my_max(1,2),3)
    73 # print(res3)
    74 
    75 range(len([1,2,3]))
    
    

     函数的参数

      1 #函数的参数分类两种:
      2 #形参:在定义阶段括号内指定的参数,相当于变量名
      3 #实参:在调用阶段括号内传入的值称之为实参,相当于值
      4 #在调用阶段,实参的值会绑定给形参,在调用结束后解除绑定
      5 # def foo(x,y): #x=1,y=2
      6 #     print(x,y)
      7 #
      8 # foo(1,2)
      9 
     10 #在python中参数的分类:
     11 #1、位置参数:按照从左到右的顺序依次定义的参数
     12 #位置形参:必须被传值,多一个少一个都不行
     13 #位置实参:与形参一一对应传值
     14 # def foo(x,y):
     15 #     print(x,y)
     16 #
     17 # foo(2,1)
     18 
     19 #2、关键字参数:在函数调用时,按照key=value的形式定义的实参
     20 #特点:指名道姓地给形参传值,不再依赖与位置
     21 def foo(name,age,sex):
     22     print(name,age,sex)
     23 
     24 # foo('egon',18,'male')
     25 # foo(sex='male',age=18,name='egon',)
     26 #注意:
     27 #1、 关键字实参必须在位置实参的后面
     28 #2、 不能为同一个参数赋值多次
     29 
     30 # foo('egon',sex='male',age=18,name='egon')
     31 
     32 
     33 #3、默认参数:在函数定义阶段,就已经为形参赋值了
     34 #特点:定义阶段已经有值意味着调用阶段可以不用传值
     35 #位置参数通常用于经常变化的参数,而默认参数指的是大多数情况下都一样的
     36 # def foo(x,y=1):
     37 #     print(x,y)
     38 
     39 # foo(1,2)
     40 # foo(y=3,x=1)
     41 # foo(111)
     42 # foo(x=1111)
     43 
     44 
     45 # def register(name,age,sex='male'):
     46 #     print(name,age,sex)
     47 #
     48 # register('egon1',18)
     49 # register('egon2',18)
     50 # register('egon3',18)
     51 # register('alex',38,'female')
     52 
     53 #注意:
     54 #1、默认参数必须放到位置形参的后面
     55 # def register(name,sex='male',age,):
     56 #     print(name,age,sex)
     57 #2、默认参数的值只在定义时被赋值一次
     58 #3、默认的参数的值通常应该是不可变类型
     59 # res=1
     60 # def foo(x,y=res):
     61 #     print(x,y)
     62 #
     63 # res=10
     64 # foo('aaaaaaaa')
     65 
     66 
     67 #4 可变长参数:在调用函数时,实参值的个数不固定
     68 #实参的形式有:位置实参和关键字实参,
     69 #形参的解决方案:*,**
     70 
     71 #*args的用法
     72 # def foo(x,y,*z): #z=(3,4,5,6)   *z相当于*args
     73 #     print(x,y)
     74 #     print(args)
     75 #
     76 # # foo(1,2,3,4,5,6)
     77 #
     78 # foo(1,2,*[3,4,5,6]) #foo(1,2,3,4,5,6)
     79 # foo(*[1,2,3,4,5,6]) #foo(1,2,3,4,5,6)#实参有*就想成这种格式
     80 
     81 # def foo(x,y):
     82 #     print(x,y)
     83 #
     84 # foo(*(1,2)) #foo(1,2)
     85 
     86 #**kwargs
     87 # def foo(x,y,**kwargs): #kwargs={'c':5,'a':3,'b':4}
     88 #     print(x,y)
     89 #     print(kwargs)
     90 #
     91 # # foo(y=2,x=1,a=3,b=4,c=5)
     92 #
     93 # foo(y=2,**{'c':5,'x':1,'b':4,'a':3}) #foo(y=2,a=3,c=5,b=4)
     94 
     95 
     96 # def foo(name,age):
     97 #     print(name,age)
     98 
     99 # foo(**{'name':'egon','age':18})
    100 # foo({'name':'egon','age':18})
    101 
    102 
    103 
    104 # def bar(x,y,z):
    105 #     print(x,y,z)
    106 #
    107 # def wrapper(*args,**kwargs): #args=(1,),kwargs={'z':2,'y':3}
    108 #     # print(args,kwargs)
    109 #     bar(*args,**kwargs) #bar(*(1,),**{'z':2,'y':3}) #bar(1,z=2,y=3,)
    110 #
    111 # wrapper(1,z=2,y=3)
    112 
    113 
    114 
    115 #命名关键字参数:指的是定义在*后的参数,该参数必须被传值(除非有它有默认值),而且必须按照key=value的形式传值
    116 # def foo(x,y,*args,m=100000,n):
    117 #     print(x,y)
    118 #     print(args)
    119 #     print(m,n)
    120 #
    121 # foo(1,2,3,n=4,)
    122 # 
     
  • 相关阅读:
    BitmapFactory.decodeStream(inputStream)返回null的解决方法
    android studio 自用快捷键方案
    jquery源码学习(四)—— jquery.extend()
    css3动画性能优化
    组件化开发之vue
    调用本地摄像头并通过canvas拍照
    傳説中的 jsonp
    jsonp的原理
    正确而又严谨得ajax原生创建方式
    让浏览器阻塞10秒钟的方法
  • 原文地址:https://www.cnblogs.com/yinfutao/p/8053919.html
Copyright © 2011-2022 走看看