【Python语言基础】12、函数-02

1. 返回值

返回值就是函数执行以后返回的结果,可以通过return来指定函数的返回值。返回值可以通过变量接收返回值

  • return 后可以返回任意的对象,甚至是一个函数
  • 如果仅写一个return或者不写return,则相当于return None
  • 函数中return后的代码都不会执行
def fn() : 
    return 123;

res = fn()
print('res = ',res)

# 结果:
res =  123

***Repl Closed***

2.文档字符串

help()是Python中的内置函数,通过help()函数可以查询Python中的函数用法
语法:help(函数对象)


help(print)

# 结果:
Help on built-in function print in module builtins:

print(*args, sep=' ', end='\n', file=None, flush=False)
    Prints the values to a stream, or to sys.stdout by default.

    sep
      string inserted between values, default a space.
    end
      string appended after the last value, default a newline.
    file
      a file-like object (stream); defaults to the current sys.stdout.
    flush
      whether to forcibly flush the stream.


***Repl Closed***

  • 文档字符串(doc str)
    在定义函数时,可以在函数内部编写文档字符串,文档字符串就是函数的说明,编写的文档字符串可以通过help()函数进行查看

定义方法:在函数的第一行写一个字符串就是文档字符串,一般使用双重引号进行跨行描述。

def fn(a,b,c) : 
    '''
    这是一个求和方法,将传入的a,b,c三个数进行求和
    '''
    return a+b+c;

help(fn)

# 结果:
Help on function fn in module __main__:

fn(a, b, c)
    这是一个求和方法,将传入的a,b,c三个数进行求和

***Repl Closed***

3. 作用域

作用域(scope)指的是变量的生效区域,在Python中共有两种作用域:

  • 全局作用域
    全局作用域在程序执行时创建,在程序执行结束时销毁;
    所有函数以外的区域都是全局作用域;
    全局作用域中定义的变量,都属于全局变量,全局变量可以在程序任意位置访问到

  • 函数作用域
    函数作用域在函数调用时创建,在调用结束时销毁;
    函数每调用一次就会产生一个新的函数作用域;
    在函数作用域中定义的变量,都是局部变量,只能在函数内部被访问

  • 变量的查找
    当使用变量时,会优先在当前作用域中寻找该变量,如果有则使用,如果没有则往上级作用域寻找,直到找到为止,如果最终全局作用域没有找到则报错


a = 123

def fn() : 
    b = 10
    print('a = ',a)
    print('b = ',b)

fn()

# 结果:
a =  123
b =  10

***Repl Closed***


a = 123

def fn() : 
    b = 10
    print('a = ',a)


fn()
print('b = ',b)

# 结果:
a =  123
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Roaming\Sublime Text\Packages\User\函数.py", line 18, in <module>
    print('b = ',b)
                 ^
NameError: name 'b' is not defined

***Repl Closed***


在函数中为变量赋值时,默认都是为局部变量赋值,如果希望在函数内部修改全局变量,则需要使用global关键字来声明变量


a = 123

def fn() : 
    a = 456
    print('内部a = ',a)
    
fn()
print('外部a = ',a)

# 结果:
内部a =  456
外部a =  123

***Repl Closed***


a = 123

def fn() : 
    global a
    a = 456
    print('内部a = ',a)
    
fn()
print('外部a = ',a)

# 结果:
内部a =  456
外部a =  456

***Repl Closed***

4. 命名空间

命名空间(namespace)指的是变量存储的位置,每一个变量都需要存储到指定的命名空间中。
每一个作用域都会有一个对应的命名空间。全局命名空间,用来保存全局变量,函数命名空间用来保存函数中的变量。命名空间实际上是个字典,专门用来存储变量的字典

  • locals() 用来获取当前作用域的命名空间
    如果在全局作用域中调用locals() 返回全局命名空间,如果在函数作用域中调用locals()则获取函数命名空间,返回的是一个字典
a = 123

scope = locals()

print(type(scope))
print(a)
print(scope['a'])

# 结果
<class 'dict'>
123
123

***Repl Closed***



scope = locals()

scope['c'] = 456 # 一般不建议这样操作

print(c)
print(scope['c'])
# 结果
456
456

***Repl Closed***


  • 函数内部的命名空间
def fn() : 
    scope = locals()
    print(scope)

fn()

# 结果:
{}

***Repl Closed***

  • global() 函数可以获取到全局的命名空间
def fn() : 
    globals_scope = globals()
    print(globals_scope)

fn()

# 结果
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000028EC9419CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\Users\\Administrator\\AppData\\Roaming\\Sublime Text\\Packages\\User\\函数.py', '__cached__': None, 'fn': <function fn at 0x0000028EC97FF240>}

***Repl Closed***

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值