• python学习初始函数


    函数的用途:解决代码的冗余、可读性差、可扩展性差。

    函数的一般格式:

    
    
    #函数定义
    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        print(length)
    
    #函数调用  
    mylen()
     

    定义def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

       def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。

       空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

       函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能

       括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!

    注释每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

    调用就是 函数名() 要记得加上括号,好么好么好么。

    函数有无返回值:

    无返回值:

    #函数定义
    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        print(length)
    
    #函数调用
    str_len = mylen()
    #因为没有返回值,此时的str_len为None
    print('str_len : %s'%str_len)

    因为函数里没有return值。

    有返回值的结构:return [表达式] 结束函数

    #函数定义
    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        return length
    
    #函数调用
    str_len = mylen()
    print('str_len : %s'%str_len)
    函数返回值可以不止一个:
    def ret_demo1():
        '''返回多个值''' 
        return 1,2,3,4
    
    
    def ret_demo2():
        '''返回多个任意类型的值'''
        return 1,['a','b'],3,4
    
    ret1 = ret_demo1()
    print(ret1)
    ret2 = ret_demo2()
    print(ret2)

    返回的多个值会被组织成元组被返回,也可以用多个值来接收。

    函数可以带有参数:

    #函数定义
    def mylen(s1):
        """计算s1的长度"""
        length = 0
        for i in s1:
            length = length+1
        return length
    
    #函数调用
    str_len = mylen("hello world")
    print('str_len : %s'%str_len)

    这个函数可以计算的字符串长度就不止“hello world”,可以在函数的调用是放入你想计算的字符串。这里就牵涉到概念形参和实参。我们传入的“hello world”是实参,函数定义里的s1是形参。

    函数的返回值有多个,可以推测函数的传入值也不止一个。

    位置参数:

    (1)按照位置传参

    def mymax(x,y):
        #此时x=10,y=20
        the_max = x if x > y else y
        return the_max
    
    ma = mymax(10,20)
    print(ma)

    (2)按照关键字传参

    def mymax(x,y):
        #此时x = 20,y = 10
        print(x,y)
        the_max = x if x > y else y
        return the_max
    
    ma = mymax(y = 10,x = 20)
    print(ma)

    (3)位置、关键字混合传参

    def mymax(x,y):
        #此时x = 10,y = 20
        print(x,y)
        the_max = x if x > y else y
        return the_max
    
    ma = mymax(10,y = 20)
    print(ma)

    注:位置参数必须在关键字参数的前面;对于一个形参只能赋值一次。

    默认参数:(这个参数大部分情况下不会改变)

    def stu_info(name,sex = "male"):
        """打印学生信息函数,由于班中大部分学生都是男生,
            所以设置默认参数sex的默认值为'male'
        """
        print(name,sex)
    
    
    stu_info('alex')
    stu_info('eva','female')

    关注点:默认参数是一个可变数据类型

    def defult_param(a,l = []):
        l.append(a)
        print(l)
    
    defult_param('alex')
    defult_param('egon')

    其实l是所有传入参数的集合。

    传参数的高级形式:不管你怎么传入我都可以接收。(*args和**kwargs)

    *args(接收位置参数,并组织成元组)

    def mysum(*args):
        the_sum = 0
        for i in args:
            the_sum+=i
        return the_sum
    
    the_sum = mysum(1,2,3,4)
    print(the_sum)

    **kwargs(接收关键字参数,并组织成字典)

    def stu_info(**kwargs):
        print(kwargs)
        print(kwargs['name'],kwargs['sex'])
    
    stu_info(name = 'alex',sex = 'male')
  • 相关阅读:
    ACR Code Pacs
    如何利用IIS调试ASP.NET网站程序详解
    Server 2003 操作系统位数
    App.config/Web.config 中特殊字符的处理
    IE 对象不支持“attachEvent”属性或方法
    Invoke和BeginInvoke理解
    升级mongodb数据库2.6.6到3.0.3,切换引擎,主从同步数据
    mac android sdk manager 无法更新(被墙)
    hadoop-mongo map/reduce java
    mongodb use where and custom function to query mongodb存储过程
  • 原文地址:https://www.cnblogs.com/1a2a/p/7258171.html
Copyright © 2020-2023  润新知