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函数的详细使用方法](https://docs.python.org/zh-cn/3/tutorial/controlflow.html) 提示:以下是本篇文章正文内容,下面案例可供参考

一、计算机函数是什么?

函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、(OOP中)方法。
一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序是由一个主函数和若干个函数构成的。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。

二、python语言函数参数详解

1.参数类型

在python的函数中参数可分为位置参数(positional argument)和关键字参数(key ward argument)。位置参数是必填项,关键字参数是可选项

下面的例子中, 指定了位置参数为1,而关键字参数没有给实参。运行正常

>>> def pos_arg(pos,arg = 1):
...     pass
... 
>>> pos_arg(1)

下面的例子中,没有给定任何实参,此时报错。

>>> pos_arg()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pos_arg() missing 1 required positional argument: 'pos'

给关键字参数任意实参,没有任何异常。

>>> pos_arg(1,arg = 666)
>>>

只给关键字参数实参会报错

>>> pos_arg(arg = 666)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pos_arg() missing 1 required positional argument: 'pos'


2.仅限位置参数

仅限关键字参数要求不能使用关键字传递实参。在某些情况下,如果不使用限定关键字参数会导致意想不到的的错误,比如:

def foo(name, **kwds):
    return 'name' in kwds

该函数永远不可能返回True,因为实参会被name读取。 所以返回值永远是FALSE。

>>> foo(1, **{'name': 2})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() got multiple values for argument 'name'
>>>

此时仅限关键字参数就派上用场了,代码如下:

def foo(name, /, **kwds):
    return 'name' in kwds
>>> foo(1, **{'name': 2})
True

可以看到在name后面出现了/这表示前面的参数是仅限位置参数,不接受关键字形式的参数,这就使得**{'name': 2}只能被**kwds吸收。

3.仅限关键字参数

仅限关键字参数使用*来表示后面的参数是只接受关键形式的参数而不接受位置参数,代码如下:

>>> def kwd_only_arg(*,arg):
...     print(arg)
... 
>>> kwd_only_arg(arg = 'hello,world')
hello,world

当给出位置参数时会报错,代码如下:

>>> kwd_only_arg('hello,world')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: kwd_only_arg() takes 0 positional arguments but 1 was given

4. 混合类型参数

请看下例:

>>> def combined_example(pos_only, /, standard, *, kwd_only):
...     print(pos_only, standard, kwd_only)

>>> combined_example('XueWeijuan say :','hello !',kwd_only='I say : hello')

XueWeijuan say : hello ! I say : hello !
>>> 

这个例子中,是混合了限定关键字参数和限定位置参数。

5.解包实参列表

函数调用要求独立的位置参数,但实参在列表或元组里时,要执行相反的操作。例如,内置的 range() 函数要求独立的 start 和 stop 实参。如果这些参数不是独立的,则要在调用函数时,用 * 操作符把实参从列表或元组解包出来:
–python官网

>>> list(range(3, 6))            # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args))            # call with arguments unpacked from a list
[3, 4, 5]

三、写给开发者

1.文档字符串 docstring

__doc__用于获取函数的说明文档,我们建议每一个开发者都要养成良好的编写docstring的习惯,代码只有一半是给机器读的,另一半是给人读的。下文教你如何给自己的函数模块编写说明文档。

1.第一行应为对象用途的简短摘要。为保持简洁,不要在这里显式说明对象名或类型,因为可通过其他方式获取这些信息(除非该名称碰巧是描述函数操作的动词)。这一行应以大写字母开头,以句点结尾。

2.文档字符串为多行时,第二行应为空白行,在视觉上将摘要与其余描述分开。后面的行可包含若干段落,描述对象的调用约定、副作用等

3.Python 解析器不会删除 Python中多行字符串字面值的缩进,因此,文档处理工具应在必要时删除缩进。这项操作遵循以下约定:文档字符串第一行 之后 的第一个非空行决定了整个文档字符串的缩进量(第一行通常与字符串开头的引号相邻,其缩进在字符串中并不明显,因此,不能用第一行的缩进),然后,删除字符串中所有行开头处与此缩进“等价”的空白符。不能有比此缩进更少的行,但如果出现了缩进更少的行,应删除这些行的所有前导空白符。转化制表符后(通常为 8 个空格),应测试空白符的等效性。

请看代码实例:

>>> def test():
...     """This is just a document and it do nothing."""        
...     pass
... 
>>> print(test.__doc__)
This is just a document and it do nothing.
>>> 

总结

本文系统的介绍了python函数参数的类型,包括位置参数和关键字参数。位置参数是必选项,关键字参数是选填项目,通常情况若不指定参数则使用默认参数。在实际开发中,使用限定关键字参数和限定位置参数也是常有的事情。前者使用/,后者使用*。另外写给开发者的建议中,包含了写出人类高质量代码的建议(记得要写文档哦!)。如果你觉得本文还不错,不妨留下一个免费的赞让更多的人看到!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:53:53  更:2021-12-14 15:55:52 
 
开发: 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/16 5:45:46-

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