zoukankan      html  css  js  c++  java
  • Python之定义函数

    Python之定义函数

    一、函数的写法:

    #语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    
    #函数名要能反映其意义
     1 def auth(user:str,password:str)->int:
     2     '''
     3     auth function
     4     :param user: 用户名
     5     :param password: 密码
     6     :return: 认证结果
     7     '''
     8     if user == 'george' and password == '123':
     9         return 1
    10 # print(auth.__annotations__) #{'user': <class 'str'>, 'password': <class 'str'>, 'return': <class 'int'>}
    11 
    12 user=input('用户名>>: ').strip()
    13 pwd=input('密码>>: ').strip()
    14 res=auth(user,pwd)
    15 print(res)
    例子
     1 def mylen():
     2     s = 'Hello George'
     3     length = 0
     4     for i in s:
     5         length += 1
     6     return length
     7 leng = mylen()
     8 print(leng)
     9 #return 返回的length的值给函数mylen
    10 #函数mylen()在将值付给leng变量
    11 #在打印leng就是结果了

    二、函数的返回值:

    函数的返回值可以是任意的数据类型

    如果有返回值,必须要用变量接收才会有效果

    def func():
        a=111
        b=[1,2,3]
        return b
    ret = func()
    print(ret)

    当有两个返回值时,返回的类型是元组类型

    def func():
        a=111
        b=[1,2,3]
        return a,b
    ret = func()
    print(type(ret))
    print(ret)

    函数也可以没有返回值,在不写return的时候,一个函数默认的返回值是‘None’

    def func1():
        a=111
        b=[1,2,3]
    ret = func1()
    print(ret)

    当只写一个return的时候,函数的返回值为None。

    def func2():
        a =111
        b = [1,2,3,]
        return
    ret = func2()
    print(ret)

    return None的时候,函数的返回值也为None(几乎不用)

    def func3():
        a = 111
        b = [1,2,3]
        return None
    ret = func3()
    print(ret)

    当函数执行到return时,就结束了当前的函数。只打印1111,如果没有return,就打印1111和2222。

    def func4():
        print(1111)
        return
        print(2222)
    func4()
    def func5():
        for i in range(10):
            if i == 6:
                return 
            else:
                print(i)
    func5()

    总结:

    #函数的返回值为None有三种情况
    #1.不写返回值
    #2.只写一个return
    #3.return None (几乎不用)
    #return的作用:结束一个函数的执行

    #函数的返回值不为None,有返回值
    #return xxx 返回一个值(一个变量)
    #return a,b 返回多个值(多个变量),多个值之间用逗号区分
          #接收:可以用一个变量接收,以元组的形式返回
          # 也可以用多个变量接收,返回几个就用几个变量去接收

    #函数要先定义 ,后调用。

    def func6():
        '''返回一个值'''
        #return 111
        #return 'abc'
        return ['abc',123]
    def func7():
        '''返回多个值'''
        a = 123
        b = 'abc'
        return a,b,[1,2,3]
    
    # ret = func7()
    # print(ret)
    # m,n,k = func7()
    # print(m)
    # print(n)
    # print(k)

    定义一个列表,返回列表的最后一个值。

    def func8():
        l = [1,2,3,4]
        return l[-1]
    
    ret = func8()print(ret)

    ====================================================

     函数使用的原则:先定义,再调用

     1 函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的变量名
     2 #测试一
     3 def foo():
     4     print('from foo')
     5     bar()
     6 foo() #报错
     7 
     8 #测试二
     9 def bar():
    10     print('from bar')
    11 def foo():
    12     print('from foo')
    13     bar()
    14 foo() #正常
    15 
    16 #测试三
    17 def foo():
    18     print('from foo')
    19     bar()
    20     
    21 def bar():
    22     print('from bar')
    23 foo() #会报错吗?
    24 
    25 
    26 #结论:函数的使用,必须遵循原则:先定义,后调用
    27 #我们在使用函数时,一定要明确地区分定义阶段和调用阶段
    28 
    29 #定义阶段
    30 def foo():
    31     print('from foo')
    32     bar()
    33 def bar():
    34     print('from bar')
    35 #调用阶段
    36 foo()
    View Code

    函数在定义阶段都干了什么:

    #只检测语法,不执行代码
    也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道

    定义函数的三种形式:

    #1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
    #2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
    #3、空函数:设计代码结构
     1 #定义阶段
     2 def tell_tag(tag,n): #有参数
     3     print(tag*n)
     4 
     5 def tell_msg(): #无参数
     6     print('hello world')
     7 
     8 #调用阶段
     9 tell_tag('*',12)
    10 tell_msg()
    11 tell_tag('*',12)
    12 
    13 '''
    14 ************
    15 hello world
    16 ************
    17 '''
    18 
    19 #结论:
    20 #1、定义时无参,意味着调用时也无需传入参数
    21 #2、定义时有参,意味着调用时则必须传入参数
    无参、有参
     1 def auth(user,password):                             
     2     '''                                                           
     3     auth function                                                 
     4     :param user: 用户名                                              
     5     :param password: 密码                                           
     6     :return: 认证结果                                                 
     7     '''                                                           
     8     pass                                                          
     9                                                                   
    10 def get(filename):                                                
    11     '''                                                           
    12     :param filename:                                              
    13     :return:                                                      
    14     '''                                                           
    15     pass                                                          
    16                                                                   
    17 def put(filename):                                                
    18     '''                                                           
    19     :param filename:                                              
    20     :return:                                                      
    21     '''                                                           
    22 def ls(dirname):                                                  
    23     '''                                                           
    24     :param dirname:                                               
    25     :return:                                                      
    26     '''                                                           
    27     pass                                                          
    28 
    29 #程序的体系结构立见           
    空函数

    空函数

    如果想定义一个什么事也不做的空函数,可以用pass语句:

    def nop():
        pass

    pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

    pass还可以用在其他语句里,比如:

    if age >= 18:
        pass

    缺少了pass,代码运行就会有语法错误。

  • 相关阅读:
    利用dns类和WMI规范获取IP及MAC地址
    vs2010编辑器中代码前的虚线问题
    项目发布方法
    HTML5 声明兼容IE的写法 asp.net 狼
    Jquery总结 狼
    IE、FF、Chrome、兼容性文章 狼
    sql游标实现行列转换 狼
    【狼的格言】 狼
    设计模式提升与加强一 狼
    读Head.First设计模式有感 狼
  • 原文地址:https://www.cnblogs.com/george92/p/8508460.html
Copyright © 2011-2022 走看看