zoukankan      html  css  js  c++  java
  • python

    一、函数定义:

    • def:表示函数的关键字

    • 函数名:函数的名称,日后根据函数名调用函数

    • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...

    • 参数:为函数体提供数据

    • 返回值:当函数执行完毕后,可以给调用者返回数据。

    二、函数结构

    def 函数名():
    ... 函数体
    ...

    例如:

    #输出字符串长度
    s ='adaijdia' def my_len(s): i = 0 for k in s: i+=1 return i a = my_len(s)#8 print(a)

     三、返回值(return)的三种情况

      1.没有返回值---返回None

            #不写return

            #只写return:结束一个函数的继续

            #return None  

      2.返回一个值:

            #可以返回任何数据类型

            #只要返回就可以接受到

            #如果在一个程序中有多个return,那么只执行第一个

      3、返回多个值:

            #用多个变量接受:有多少返回值就用多少变量接收

            #用一个变量接收:得到的是一个元祖

    四、参数

    4.1、参数定义

      1.形参:

      #写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx

      2.实参:

      #在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx

     函数的传参就是函数将实际参数交给形式参数的过程.

    #输出字符串长度
    s ='adaijdia'
    def my_len(s):  #接收参数,形式参数,形参
        i = 0
        for k in s:
            i+=1
        return i
    a = my_len(s)  #传递参数:传参,实际参数,实参
    print(a)#8

     4.2、站在实参的角度上,传参数

       1.按位置传参数

       2.按关键字传参数

       3.混合传参(必须先按位置传参,再按关键字传参数!

    #站在实参的角度上,传参数
    def s(a,b):
        result = a-b
        return result
    s1 = s(2,3)#按位置传参数
    s2 = s(b = 3,a = 2)#按关键字传参数
    s3 = s(2,b = 3)#混合传参(必须先按位置传参,再按关键字传参数!)
    print(s1,s2,s3)#-1 -1 -1

     4.3、站在行参的角度上,传参数

       1.位置参数:必须传,有几个参数就传几个值

       2.默认参数:可以不传,如果不传就是默认的参数,如果传了就用传的

    #站在行参的角度上,传参数
    def classmate(name,index=''):
        print('{}:{}'.format(name,index))
    classmate('wws')#wws:男
    classmate('db','')#db:女

    五、命名空间

    5.1内置命名空间  ——— python解释器

           #就是pytho解释器一启动就可以使用的名字存储在内置命名空间里

           #内置的名字在启动解释器的时候被加载进内存里

    5.2 全局命名空间 —— 我们写的代码但不是函数中的代码

            #是在程序从上到下被执行的过程中一次加载进内存的

            #放置了我们设置的所有变量名和函数名

    5.3 局部命名空间  —— 函数

           #就是函数内部定义的名字

           #当调用函数的时候 才会产生这个命名空间 随着函数执行的结束 这个命名空间就消失了

    六、作用域

    6.1 分类:

    1.全局作用域  ——作用在全局  —— 内置和全局名字空间中的名字都属于全局作用域    ——globals()   #永远打印全局的名字

    2.局部作用域 —— 作用在局部 —— 函数(局部名字空间中的名字属于局部作用域)  ——locals()   #输出什么 根据locals所在位置

    6.2  注意点

    1.对于不可变数据类型 在局部可是查看全局作用域中的变量

    2.但是不能直接修改

    3.如果想要修改,需要在程序的一开始添加global声明

    七、nonlocal:声明一个上面第一层局部变量

    i = 1
    def s():
        i = 1
        def s1():
            i = 2
            def s2():
                nonlocal i
                i+=2
                print('s2:',i)# s2: 4
            s2()
        s1()
    s()
    print('s:',i)  #  s: 1

     八、函数名

    8.1 函数名可以赋值

    #函数名可以赋值
    def func():
        print('123')
    func1 = func
    func1()  #123

    8.2 函数名作为容器类型的元素

    #函数名作为容器类型的元素
    def func():
        print('123')
    func1 = func
    l = [func1,func]
    for i in l:
        i()
    # 123
    # 123

    8.3函数名可以作为函数的参数

    #函数名可以作为函数的参数
    def func():
        print('123')
    def func2(s):
        return s
    conturn = func2(func)
    conturn()#123

     九、闭包

    1.闭包是嵌套在函数中的函数。
    2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用。

    # 闭包
    
    def outer():
        i = 1
        def inter():
            print(i)
        return  inter
    s = outer()
    s()# 1
  • 相关阅读:
    信息系统项目管理师沟通的四个好习惯
    Android 线程
    替换exe程序图标DLL
    Python 邮件类
    android自适应屏幕方向和大小
    sqlserver 存储过程
    FinalData 数据恢复工具[绿色版]
    Python Python 正则 取中括号值
    在Button任意位置加图片效果
    android GPRS
  • 原文地址:https://www.cnblogs.com/2584808136-qq-com/p/12872513.html
Copyright © 2011-2022 走看看