doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:6454回复:0

python 基础 学习系列4 — 函数

楼主#
更多 发布于:2018-01-17 22:47
函数
函数:有一定功能的代码块
函数作用:提高利用率(重复使用)、封装(模块化)

定义:
   语法
    def 函数名(参数列表):
         函数体(代码块)

    调用
        函数名(参数)

   分类:   有无参数:
                     有参函数、无参函数
                有无返回值:
                      有返回值函数、 无返回值函数
   参数:
        形参:定义函数时申明的参数
        实参:调用函数时传递的参数
        联系:形参相当于复制实参
     注: 引用类型的复制,形参改变了,实参也会变
              值类型的复制,形参不会改变实参

   参数参型
      默认参数(形参后赋值,这个值称为默认值):默认值,要在必须参数的后面
      必须参数(没有设置默认值的就是必须参数)
      关键字参数(指定形参的名字来传递值) e.g student(age=18,name='doubleyong')
      不定长参数 (*变量名, *后面的变量是元组类型) 注:不定长的参数也必须放到参数的后面
      e.g  def student(name, *info)    # 变量info 是元组类型

     返回值:
            return 值
     函数没有return 时, 返回None
    注: return 可以返回多个值,并且将多个返回值,装到一个元组中
     如下:
           def add(num1,num2):
                  return num1,num2,num1+num2
          result = add(5,3)
          print(result)    # result 为元组类型,结果为: (5,3,8)

变量作用域
Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:
  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内建作用域
  • 以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

  • x = int(2.9) # 内建作用域 g_count = 0 # 全局作用域 def outer(): o_count = 1 # 闭包函数外的函数中 def inner(): i_count = 2 # 局部作用域
全局变量   or   局部变量
# python中,只有模块(module)、类(class)、函数(def、lambda),会产生新的作用域
if(True):
     x = 5
print(x)
注:python中, 直接写if结构它是不会产生作用域的,所以x打印出来是5.

# 函数里定义的是局部变量,局部变量,当前函数可以访问
# 函数外定义是全局变量, 全局变量,所有的函数都可以访问,不能修改,要修改,必须在前面加global
x = 5
def change():
    global x
     x=10
change()
print(x)
# 函数里,要修改全局变量,变量前加global
   如果要修改不是自己的变量,加nonlocal,它是向上找,最先找到谁就是谁。
   nonlocal, 不能找到全局的变量

y = 5
def a():
    y = 10
    def b():
        # y=11
        def c():
            nonlocal y
            y=18
            print('c函数中的y',y)
        c()
        print('b函数中的y',y)
    b()
    print('a函数中的y',y)

a()
print('全局中的',y)

注: nolocal会向上找,找到上级的变量后,进行修改,但是不会找到全局变量,只限在def内定义的变量
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号