• 从零开始的Python学习Episode 10——函数


    函数

    一、函数的创建

    简单格式

    def function_name(参数表):
        函数体
        return
    

    如果没有写return,函数会默认返回一个none

    二、函数的参数

    必需参数:

    调用函数时必需参数须以正确的顺序传入,调用的数量必须和声明时的一样。

    def func1(name,age):
    print('my name is %s,i am %d years old'%(name,age)) func1('smilepup',20) #输出my name is smilepup,i am 20 years old

    关键字参数:

    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    def func1(name,age):
    
        print('my name is %s,i am %d years old'%(name,age))
    
    #func1(20,'smilepup')#报错
    func1(age = 20,name = 'smilepup')
    

      

    缺省参数(默认参数):

    调用函数时,缺省参数的值如果没有传入,则被认为是默认值,如果输入了缺省参数了,则传入输入的参数。

    def print_info(name, age, gender='male'):
    
        print('Name:%s' % name)
        print('age:%s' % age)
        print('Sex:%s' % sex)
        return
    
    print_info('smilepup', 20)#gender为male
    print_info('puppy', 2, 'female')#gender为female
    

      

    不定长参数

    当需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。

    def func1(*args):
    
        print(args)
        return
    
    func1(1,2,3,4)
    #输出(1, 2, 3, 4)
    

      args中的数据用元组保存。

    用**的变量名可以存放命名的变量参数

    def func1(**args):
    
        print(args)
        return
    
    func1(name = 'smilepup',age = 20,gender = 'male')
    #输出{'name': 'smilepup', 'age': 20, 'gender': 'male'}
    

      而这种则用字典保存数据。

    当函数需要传入不同类型的变量时,要注意顺序必需参数、默认参数、带一个星号的不定长参数、带两个星号的不定长参数的顺序定义形参,否则会报错。

    三、作用域

    L:local,局部作用域,即函数中定义的变量;

    E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

    G:globa,全局变量,就是模块级别定义的变量;

    B:built-in,系统固定模块里面的变量,比如int, bytearray等。

    搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域

    global关键字 

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下

    count = 10
    def outer():
        global count
        print(count) 
        count = 100
        print(count)
    outer()
    #10
    #100
    

      

    四、递归函数

    定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

    斐波那契数列

    def fibo(n):
        before = 0
        after = 1
        for i in range(n - 1):
            ret = before + after
            before = after
            after = ret
    
        return ret
    

      

  • 相关阅读:
    计算 sql查询语句所花时间
    iframe自适应高度,以及一个页面加载多个iframe
    窗体移动API和窗体阴影API
    js复习:
    web组合查询:
    web登陆,增删改加分页。
    cookie和Session传值
    控件及其数据传输
    ASP.NET WebForm
    三月总结
  • 原文地址:https://www.cnblogs.com/smilepup-hhr/p/9727293.html
Copyright © 2020-2023  润新知