Python 函数

使用关键词def定义函数,定义函数的语法格式如下

def <函数名> (参数列表):

<函数语句>

return <返回值>

其中参数列表和返回值不是必须的

例如:定义一个基本的输出信息函数hello()。

def hello():
    print("Hello World")
hello()

 在Python中定义函数不需要定义函数的返回值类型和定义参数的类型

函数文档

函数文档的作用是描述该函数的功能以及一些注意事项:

函数的文档字符串可以通过特殊属性_ _doc_ _获取

import emoji
help(emoji)

 导入模块

import module_name

只导入模块中指定的特定函数

from module_name import function_name

 导入多个指定函数用逗号分隔

位置参数

必须参数被称为位置实参。

#定义函数 info()打印姓名和年龄
def info(name,age):
    print('姓名为',name)
    print('年龄为',age)
info()

当使用位置实参时没有实参传入,会报错

可以为函数的参数提供默认值

#定义函数 info()打印姓名和年龄
def info(name='小明',age=18):
    print('姓名为',name)
    print('年龄为',age)
info()

另外,在定义函数的时候,位置参数必须在默认参数的前面,否则就会出错:

可变长度参数

若实参个数不确定,在定义函数的时候,形参就可以使用收集参数来“搞定”。而语法也很简单,仅需要在参数前面加上星号(*)即可:

def functionname([formal_args,]*var_args_tuple):

"""

函数文档

"""

function_suite

return[expression]

加了“*” 的变量名会保存所有未命名的变量参数。函数在调用时可变参数会被作为元组来进行处理,如果没有指定参数他就是一个空元组

如果在参数名前加上两个星号“**” 函数在调用时可变长度参数会被作为字典来处理

 例如,print()的原型如下:

     print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

objects参数是一个收集参数,如果传入多个参数,将依次打印出来;sep参数指定多个参数之间的分隔符,默认是空格;end参数指定以什么字符结束打印,默认是换行符;file参数指定输出的位置;flush指定是否强制刷新缓存。

全局变量的作用域是整个模块,也就是代码段内所有的函数内部都可以访问到全局变量。但要注意的一点是,在函数内部仅仅去访问全局变量就好,不要试图去修改它。

LEGB

• L-Local:函数内的名字空间。

• E-Enclosing function locals:嵌套函数中外部函数的名字空间。

• G-Global:函数定义所在模块的名字空间。

• B-Builtin:Python内置模块的名字空间。

那么变量的查找顺序依次就是L→E→G→B。

global和nonlocal关键字

1.global关键字

global关键字可以在函数内部使用全局变量

def fun():
    global a
    a = 1
    a += 5
    print("fun函数内a的值=",a)
a = 0
print("全局变量a的值",a)
fun()
print("此时是调用函数fun后全局变量a的值",a)

 

 通过global 将局部变量a变为全局变量

2.nonlocal关键字

在嵌套的函数中,可以使用nonlocal关键字修改嵌套作用域中的变量

def fun():
    a = 1
    def funin():
        nonlocal a
        a = 6
    print("调用内部函数之前,a的值为:",a)
    funin()
    print("对变量a使用nonlocal关键字重新赋值后,a的值为:",a)
fun()

 

 

递归函数

导入模块

第一种:import 模块名

第二种:from 模块名 import 函数名

第三种:import 模块名 as 新名称

 _ _name_ _='_ _main_ _'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值