美文网首页
python入门(四)函数

python入门(四)函数

作者: 淡漠不淡漠 | 来源:发表于2019-11-12 11:41 被阅读0次

    函数

    • 关键字 def 后接函数名称和圆括号()
    • 传人参数必须放到圆括号中()
    • 函数第一行使用冒号:结尾
    • 函数体使用缩进分割
    #!/usr/bin/python3
    
    def getPerson():
        return 'hello word'
    
    print(getPerson()
    #输出结果:hello word
    

    默认参数

    • 必选参数必须在前面,默认参数在后。
    • 默认参数一般为,参数值变化小的设置为默认参数。
    #!/usr/bin/python3
    
    def getPerson(name, sex, age = '18'):
        return 'name=' + name + '\nsex=' + sex + '\nage=' + age
    
    print(getPerson('lxy', 'f')
    #输出结果:
    name=lxy
    sex=f
    age=18
    

    参数

    • 在python,类型属于对象,变量是没有类型的
    a = 'hello word'
    a = [1,2,3]
    
    • 上面的例子中 'hello word' 是String类型,[1,2,3]是List类型 变量a是一个指针它可以是String类型也可以是List类型

    可更改对象

    • List(列表)Sets(集合)Dictionaries (字典) 是可变类型
    #!/usr/bin/python3
    nums = [1, 2, 3]
    nums[0] = 5
    print(nums)
    #输出结果:[5, 2, 3]
    
    • 变量赋值nums = [1, 2, 3] 后再赋值nums[0]=5,则是将list nums的第1个元素值更改,本身nums没有动,只是其内部的一部分值被修改了。

    不可变对象

    • Numbers (数字) String (字符串) Tuple (元组) 为不可变对象
    #!/usr/bin/python3
    a = 'hello'
    a = 'word'
    print(a)
    #输出结果:word
    
    • 这里a赋值‘hello’再赋值'word', 其实是重新生成一个String类型,然后hello被丢弃,重新指向word,相当于新生成a
    #!/usr/bin/python3
    def ChangeInt( a ):
        a = 10
    
    b = 2
    ChangeInt(b)
    print(b)
    # 输出结果2
    
    • 调用ChangeInt(b) 传值的时候 a 、b指向同一类型 2
    • 但a = 10 的时候就重新生成了一个新的对象

    命名参数

    • 一般给函数传参数的时候,需要按照顺序传参,但是可以使用命名参数就不需要按照顺序传参数
    • 如下例子,两种输出方式是一样的
    #!/usr/bin/python3
    def getPerson(name, age):
        print('name=',name)
        print('age=', age)
    getPerson('lxy', 11)
    getPerson(age=11, name='lxy'
    #输出结果
    name= lxy
    age= 11
    

    不定长传参

    • 有的时候可能需要多个参数,但是又不想写多个参数来接收就可以使用不定长传参
    • 使用 *
    #!/usr/bin/python3
    def nums(n, *num):
        print(n,num)
    
    nums(1,2,3,4,'aaa')
    
    输出结果:1 (2, 3, 4, 'aaa')
    
    • 想获取其中一个值 可以使用下标
    #!/usr/bin/python3
    def nums(n, *num):
        print(n,num[0])
    
    nums(1,2,3,4,'aaa')
    #输出结果:1 2
    

    匿名函数

    • 关键字 lambda
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    #!/usr/bin/python3
    
    sum = lambda n1,n2: n1+n2
    
    print(sum(1,2))
    #输出结果:3
    

    全局变量和局部变量

    • 定义在函数内部的都有一个局部作用域,定义在全局的是全局作用域
    • 局部变量只能在函数内部使用
    • 全局变量可以在全局使用
    #!/usr/bin/python3
    total = 10
    def sum():
        print('total=', total)
    
    sum()
    #输出结果:total= 10
    
    • total 为全局变量可以在函数sum内部使用
    #!/usr/bin/python3
    def sum():
        a = 10
    
    print(a)
    #输出结果:NameError: name 'a' is not defined
    
    • a是在sun内部声明的,所以在函数外部调用会报错

    相关文章

      网友评论

          本文标题:python入门(四)函数

          本文链接:https://www.haomeiwen.com/subject/naztictx.html