IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学习 Python 之 函数 -> 正文阅读

[Python知识库]学习 Python 之 函数

python函数

1. 函数的作用和特性

  1. 功能性
  2. 隐藏细节
  3. 避免编写重复代码
  4. 组织代码

2. 函数的定义

def function_name(parameter_list):
    pass

parameter_list是参数列表, 可有可无

例子: 定义一个add()函数实现两个数的相加, 返回相加后的结果

def add(x, y):
    return x + y

3. 函数返回值

使用return关键字让函数有返回值, 如果函数没有返回值, 返回值为None

(1). 返回多个值

def fun(x, y):
    return x, y

当返回值大于一个时, 返回结果是一个元组

def fun(x, y):
    return x, y
    
print(fun(1, 2))

结果为:

(1, 2)

(2). 接收返回值

第一种接收方法和使用方法(不推荐)

def fun(x, y):
    return x, y
    
result = fun(1, 2)
print(result[0], result[1])

第二种接收方法和使用方法(推荐)

def fun(x, y):
    return x, y
    
a, b = fun(1, 2)
print(a, b)

这种方法也成为序列解包

(3). 序列解包

将一个序列的值逐一把赋给其他变量

序列: 字符串、列表、元组、字典、集合

a, b, c = [1, True, 'a']
print(a, b, c) 

1, True, ‘a’

当函数有多个返回值是, 将返回一个元组, 元组是序列, 所以可以使用序列解包

a, b, c = 'abc'
print(a, b, c)

a b c

快速赋值

a, b, c = 1, 2, None
print(a, b, c)

1, 2, None

快速复制的原理也是序列解包

a = 1, 2, None
print(type(a))

<class ‘tuple’>

4. 函数参数

参数类型例子
必须参数fun(1, 2)
关键字参数fun(y = 1, x = 2)
默认参数fun(1)
可变参数def fun(*parmeter):
关键字可变参数def fun(**parmeter):
(1). 必须参数

函数中规定了几个参数, 调用该函数时就必须传递几个参数

def fun(x, y):
    return x, y
    
a, b = fun(1, 2)
print(a, b)

fun函数规定了两个参数, 调用时必须传递两个参数

(2). 关键字参数

默认情况下, 传入的参数是从左向右依次赋值的

def fun(x, y):
    return x, y

对于fun函数, 调用时fun(1, 2), 则x=1, y=2

关键字参数用来指定参数的值

def fun(x, y):
    return x, y
    
a, b = fun(y = 1, x = 2)

此时, x的值被指定为2, y的值被指定为1

(3). 默认参数

函数参数不传时有一个默认值

def fun(x, y = 2):
    return x, y
    
a, b = fun(1)

上述例子, y的值没有传入, 就为默认值

默认参数必须在必须参数的左边

下面这个例子是错误的

def fun(x, y = 2, z):
    return x, y, z
    
fun(1, 3)

正确写法

def fun(x, y, z = 2):
    return x, y, z
    
fun(1, 3)
(4). 可变参数

参数前面使用*表示该参数是可变参数, 可变参数表示, 调用该函数时, 传入的参数可以是不确定个数的

定义一个可变参数函数

def fun(*parament):
    print(parament)

fun(1, 2, 3, 4)

输出

(1, 2, 3, 4)

参数列表会转换成元组

如果传入参数为元组, 结果就会变成元组的元组

fun((1, 2, 3, 4))

((1, 2, 3, 4), )

如果我想传入元组, 进入函数不让它变成元组的元组, 怎么办呢?

使用*

def fun(*parament):
    print(parament)

fun((1, 2, 3, 4))
fun(*(1, 2, 3, 4))

结果为, 使用*后, 参数没有被转换成元组的元组

((1, 2, 3, 4),)

(1, 2, 3, 4)

(5). 关键字可变参数

如果要指定参数的名字和值, 仅使用可变参数是不行的

def fun(*para):
    print(para)

fun(a = 1, b = 2)

这样会出现错误

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\python\demo.py", line 8, in <module>
    fun(a = 1, b = 2)
TypeError: fun() got an unexpected keyword argument 'a'

那么如何实现呢, 使用**

def fun(**para):
    print(para)

fun(a = 1, b = 2)

结果

{‘a’: 1, ‘b’: 2}

但是结果变成了字典, 所以可变关键字参数列表会被转换成字典

使用**

def fun(**para):
    for k, v in para.items():
        print(k, '-', v)

a = {
    '1': 'one',
    '2': 'two'
}

fun(**a)

1 - one

2 - two

5. 变量作用域

(1). 作用域

作用域类型说明
全局作用域在函数外部的作用域, 变量可以在整个应用程序中使用
函数作用域局部变量, 变量只能在函数内部使用

for循环外部可以引入for循环内部的变量, 因为python没有块级作用域

def funOne():
    c = 2
    print('one', id(c))
    def funTwo():
        c = 3
        print('two', id(c))
        print(c)
    funTwo()

funOne()

结果

one 2571382423824

two 2571382423856

3

(2). global关键字

用于将局部变量变成全局变量

def func():
    global c
    c = 2

func()
print(c)

2

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:55:28  更:2022-05-21 18:57:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:23:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码