返回顶部
首页 > 资讯 > 后端开发 > Python >Python3函数
  • 717
分享到

Python3函数

函数 2023-01-31 08:01:16 717人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python3 函数 函数文字定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段;函数能提高应用的模块性,和代码的重复利用率。 定义函数 函数的定义有以下规则: 函数代码块以 def 关键词开头,后接函数标识符名

python3 函数

  • 函数文字定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段;函数能提高应用的模块性,和代码的重复利用率。

定义函数

函数的定义有以下规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号之中,圆括号之中可以用于定义参数。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

定义语法

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

示例

# 输出hello world函数

def HelloWorld():
    print('Hello  world')

# 函数调用
HelloWorld()

几种参数的用法

1、默认参数

在函数调用时,可以不传送值的参数;或者说,有默认值的参数

  • 默认参数的值可以被覆盖
  • 默认参数必须在参数列表的最后
  • 默认参数在函数里只分配一次
    -示例:
# 例1:

#!/usr/bin/python3

import random

def choose_num(s,e=10):
    num = random.randint(s,e)
    return num

choose_num(3)  # 调用时只传了s,未传e,e用的默认值
输出 5

choose_num(1,50)  # 默认值被覆盖
输出 28

# 示例2,默认值必须在最后

#!/usr/bin/Python3

def choose_num(s=10,e):  # 默认值放前边,报错了。
    num = random.randint(s,e)
    return num

choose_num(3)

报错
File "<ipython-input-18-16c067f4bcb8>", line 1
    def choose_num(s=10,e):
                  ^
SyntaxError: non-default argument follows default argument

def choose_num(s, e=10, n=5): 
    numbers = []
    for x in range(n):
        num = random.randint(s,e)
        numbers.append(num)
    return numbers

choose_num(3)
输出
[6, 7, 4, 3, 8]

# 示例3,默认值只分配一次

#!/usr/bin/python3

def f(a,L=[]):       # 由于默认值只在内存里分配一次,所以当此列表做默认值时,       
    L.append(a)  # 结果不管调用多少次,都是往已经分配好的列表中追加的
    return L        # 就是结果中的样子。
                        # 而不是第一次返回 [1]  第二次返回[2]  第三次返回[3]
print(f(1))
print(f(2))
print(f(3))

输出
[1]
[1, 2]
[1, 2, 3]

2、关键参数(k=v 方式给参数传值)

示例代码:

#!/usr/bin/python3

def car(color,price='10',user='yhyang'):
    print(f'{user}有一辆{color}色的车,价值{price}块')

car('蓝') # 其它的使用默认参数
car('红','30','hmm') # 对应位置覆盖
car(color='blue',price='100',) # k=v的方式给参数传值,

输出
yhyang有一辆蓝色的车,价值10块
hmm有一辆红色的车,价值30块
yhyang有一辆blue色的车,价值100块

3、任意参数

*args , **kwargs 作参数,args->tuple,kwargs->dict
示例代码:

#!/usr/bin/python3
def car(*args):     # 一个*号跟args,即 *args 可以成为一个元组
    print(args)     # 两个*号跟kwargs 即 **kwargs  可以成为一个字典
    for k in args:  # 重点在于*号有几个,不在于args kwargs的名称
        print(k)

car("red",10,"yhyang")

输出
('red', 10, 'yhyang')
red
10
yhyang

#!/usr/bin/python3
def car(**kw):  # 这种参数,在传递的时候需要传递 key=value的方式,才能按字典的方式存储并打印
    for k,v in kw.items():
        print(f'{k}::{v}')

car(color='red',price=20,user='yhyang')
输出
color::red
price::20
user::yhyang

#!/usr/bin/python3
def car(*args,**kw):  # 可以识别单个参数和key value参数
    print('args:',args)
    print('kw:',kw)
    for k in args:
        print(k)
    for k,v in kw.items():
        print(f'{k}::{v}')
car('adfsdf','t',color='red',price=20,user='yhyang') # 可以识别单个参数和key value参数
输出
args: ('adfsdf', 't')
kw: {'color': 'red', 'price': 20, 'user': 'yhyang'}
adfsdf
t
color::red
price::20
user::yhyang

4、注意:直接传字典名字的时候要加两个*号

示例代码:

#!/usr/bin/python3
kwargs = {'color':'red','price':30,}
def car(**kw):
    print(kw)
car(**kwargs)  #这里注意,传字典名字的时候前面要加两个*
输出
{'color': 'red', 'price': 30}

5、下面这种写法,* 参数可传可不传,但是price一定要传,而且是以key value的方式来传

示例代码:

#!/usr/bin/python3
def car(color='blue',*,price): 
    print(color,price)

car(price=30)
输出
blue 30

函数注释与文档说明(annotations,doc)

示例代码:

#!/usr/bin/python3
def add(x,y):
    """Add x and y together."""  # 函数文档说明,写在函数定义的第一行,就可以用 
    return x+y                  # 函数名.__doc__来查看函数说明文档
add.__doc__
输出
'Add x and y together.'
  • 下边例子中,x:int y:'这个参数随便' 是对x 和y的说明 ;-> int 是对函数返回值的说明,在执行过程中,会将这个说明忽略
  • doc 来获取函数说明文档,annotations来获取函数参数及返回值
    示例代码:
#!/usr/bin/python3
def add(x:int, y:'这个参数随便')-> int:  
    """Add x and y together."""
    return x+y

add.__doc__
add.__annotations__   
输出
'Add x and y together.'
{'x': int, 'y': '这个参数随便', 'return': int}

函数变量的作用域

变量作用域,在自己屋干自己的事儿

  • 本地(局部)
  • 封闭
  • 全局
  • 内置
    示例代码:
# 以下代码会报错

#!/usr/bin/python3
x = 1     # 全局
def add():
    x += 1  # 局部变量赋值错误,此处x没有被声明,所以不能被赋值,此处x不是全局的x
    print(x) 
add()

error_list = [2,3,5]
def big_list():
    error_list += [99]   # 此处是error_list = error_list + [99],需要先在函数内部声明error_list,才不会报错
    print(error_list)
big_list()

示例代码:

#!/usr/bin/python3
error_list = [2,3,5]
def big_list():
    error_list.append(88) # 此处是在全局变量的基础上追加,所以可以。
    print(error_list)
big_list()
输出
[2, 3, 5, 88]

error_list = [2,3,5]
def big_list():
    error_list = []   # 事先声明才能做下边的 += 操作
    error_list += [99]   
    print(error_list)
big_list()
输出
[99]

函数嵌套

函数是python里面的一级对象,可以用在任何地方,函数里的作用域属于封闭作用域

  • 一级对象
  • 在运行时创建
  • 能赋值给变量或数据结构
  • 作为参数传递给函数
  • 能作为函数的返回结果
    示例代码:
# 函数嵌套

#!/usr/bin/python3
def calc(x,y):
    def add(x,y):
        print('x+y:',x+y)
    def sub(x,y):
        print('x-y:',x-y)
    def mul(x,y):
        print('x*y:',x*y)

    add(x,y)  # 在函数内部直接执行嵌套的函数
    sub(x,y)
calc(2,5)
输出
x+y: 7
x-y: -3

# 返回值为函数本身

#!/usr/bin/python3
def calc(x,y):
    def add(x,y):
        print('x+y:',x+y)
    def sub(x,y):
        print('x-y:',x-y)
    def mul(x,y):
        print('x*y:',x*y)

    add(x,y)  # 在函数内部直接执行嵌套的函数
    sub(x,y)

    return mul # 返回 mul函数本身,可以赋给变量
calc(3,5)
输出
x+y: 8
x-y: -2
<function __main__.calc.<locals>.mul(x, y)>

c = calc(3,5)  # c 被赋值为mul函数
输出
x+y: 8
x-y: -2

闭包

函数返回值为内部函数的名字,内部函数又处理外层函数变量;这个整体叫闭包
示例代码:

# 闭包
#!/usr/bin//python3
def hello():
    s = 'yhyang'   # s变量在函数中是自由变量
    def say():
        print(s)
    return say    # 返回内部函数名,内部函数绑定了外层函数的变量
hello()
h = hello()
h()    # h 得到的值为say()函数,再次执行,则会用到外层函数的变量s
输出
<function __main__.hello.<locals>.say()>
yhyang

函数闭包,或者闭包函数,本质是一种函数,可以在函数运行以后,依然存在自由变量(或者说可用变量),可以对闭包的数据进行隐藏,避免使用全局变量
如上边 hello中的变量 s一样,在第一次执行h = hello的时候,隐藏了s,此时s为自由变量,依然存在,可以继续使用。

--结束END--

本文标题: Python3函数

本文链接: https://lsjlt.com/news/192860.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python3 函数
    形式参数: 实际参数:固定数参数 默认参数:给参数一个默认值,赋予新值时覆盖默认值。 位置参数:sys.argv[XX] 代码名称、函数、变量不可以与系统默认参数、模块名字相同 if __name__ == '__main__': __...
    99+
    2023-01-31
    函数
  • Python3函数
    Python3 函数 函数文字定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段;函数能提高应用的模块性,和代码的重复利用率。 定义函数 函数的定义有以下规则: 函数代码块以 def 关键词开头,后接函数标识符名...
    99+
    2023-01-31
    函数
  • Python3 函数
    定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.分类: 内建函数 自定义函数说明: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数 函...
    99+
    2023-01-31
    函数
  • 【Python3】Python函数
    1. 函数对象 函数是第一类对象,即函数可以当做数据传递 可以被引用 可以当做参数传递 返回值可以是函数 可以当做容器类型的元素 def foo(): print('from foo') def index(): p...
    99+
    2023-01-31
    函数 Python
  • python3 eval()函数
    eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 so,结合math当成一个计算器很好用。 可以把list,tuple,dict和string相互转化 a = "[[1,2], [3,4],...
    99+
    2023-01-31
    函数 eval
  • python3--函数初识
    比如python没有len()方法,如何求字符串长度,使用for循环s = 'dadhhrqlasd' count = 0 for i in s: &nb...
    99+
    2023-01-30
    函数
  • python3--函数进阶
    例子def func(a,b,c,d,e,f,g):    passprint(func(a, b , c, d, e, f, g))如果再加30个参数呢?,在后面继续添加?有没有万能的参数,可以代表一切参数呢?*arg...
    99+
    2023-01-30
    进阶 函数
  • python3--高阶函数
    # Auther: Aaron Fan'''# 高阶函数:把一个函数名,以实参的形式,传给这个函数的形参,这个函数就称为高阶函数。比如下面的形参c,对应的实参是一个函数名abs。# 函数abs()的功能是取绝对值def add(a,b,c)...
    99+
    2023-01-31
    高阶 函数
  • python3的zip函数
    zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象.这个可迭代对象可以使用循环的方式列出其元素若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可迭代对象相同.用法1:用两...
    99+
    2023-01-31
    函数 zip
  • python3--嵌套函数
    # Auther: Aaron Fan# 嵌套函数# 定义:# 在一个函数体内,用def重新定义新的函数,才叫嵌套函数# 示例1:  #属于嵌套函数def foo():    print("in the foo")    def bar()...
    99+
    2023-01-31
    嵌套 函数
  • Python3中的open函数
    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)    Open file and...
    99+
    2023-01-31
    函数 open
  • Python3 调用 js 函数
    【PyExecJS】#encoding: utf-8 #author: walker # date: 2019-03-13 # summary: 利用 PyExecJS 调用 js 函数 import execjs JSCode = r...
    99+
    2023-01-31
    函数 js
  • python3 函数迭代器
    迭代器协议: 迭代器协议,是指对象(实例)能够使用next函数获取下一项数据,在没有下一项数据之前触发一个StopIteration异常来终止迭代next(it)  对应__next__(self)方法iter(obj) 对应__iter_...
    99+
    2023-01-31
    函数 迭代
  • python3的函数调用
    python定义一个函数 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明 函数内容以冒号...
    99+
    2023-01-31
    函数
  • python 之 python3内置函数
    一. 简介   python内置了一系列的常用函数,以便于我们使用,python英文官方文档详细说明:点击查看, 为了方便查看,将内置函数的总结记录下来。   二. 使用说明...
    99+
    2024-04-02
  • python3.x的print()函数默
    初学python ,写了个99乘法表,for i in range(1, 10) :    for j in range(1, i+1) :        print(j, 'x', i, '=', j*i,,end='\t')   pri...
    99+
    2023-01-31
    函数 print
  • Python3中的内置函数
    将一个整数转换成二进制string。eg:>>> bin(2)'0b10'返回Unicode 码点是整数i的string。ord()与chr()相反。eg:>>> chr(100)'d...
    99+
    2023-01-31
    函数
  • python3内置函数详解
    内置函数注:查看详细猛击这里abs() 对传入参数取绝对值bool() 对传入参数取布尔值, None, 0, "",[],{},() 这些参数传入bool后,返回Falseall() 所有传入参数为真,才为真any() 任何一个传入参数为...
    99+
    2023-01-31
    详解 函数
  • python3内置函数大全
    由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码:        https://github.com/tyutltf/Pyt...
    99+
    2023-01-31
    函数 大全
  • Python3的re.match函数怎么用
    本篇内容主要讲解“Python3的re.match函数怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python3的re.match函数怎么用”吧!实例#!/usr/bin/python3...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作