python函数的高级应用详解

 更新时间:2021年11月23日 10:52:19   作者:江湖2001  
这篇文章主要为大家介绍了python函数的高级应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

前言

函数是我们所熟知的,在python中函数的定义格式如下:

def 函数名(形式参数):

​ 函数体

​ 函数的封装就是实现代码块的复用,python内置了一些基础的函数,开发者也可以自己定义函数,函数只能先定义,再进行调用。

一、函数调用的步骤

1、程序遇到函数调用的情况时,暂停执行

2、将实际参数值传递给函数参数

3、执行函数体语句

4、返回值并继续向下执行

二、参数的打包和解包

打包

​ 参数的打包指的是多个参数可以同时处理,也叫可变长度参数, 可变长度参数在定义函数时主要有两种形式*parameter和**parameter,前者用来接受任意多个参数并将其放在一个元组当中,后者接收多个关键参数组成键值对并将其放在字典当中。

打包为元组

def demo(*p):
  print(p)
demo(1,2,3,4,5,6)
#结果
(1,2,3,4,5,6)

打包为字典

def demo(**p):
  print(p)
demo(x=1,y=2,z=3)
#结果
{'x':1,'y':2,'z':3}

#参数的打包就是将形参设为*参数名形式,实参为多个参数,这是后会将多个参数处理为元组或字典的可迭代对象,是把个体打包为整体。

解包

​ 与参数的打包相对应,参数的解包同样也有s和**s两种形式,调用含有多个位置参数的函数时,可以使用列表,元组,集合等可迭代对象作为实参,在实参名前面加一个,Python会自动对其进行解包,并把序列中的值分别传递给多个形参变量。

def demo(a,b,c,d):
  print(a+B*c/d)
list1=[1,2,3,4]
demo(*list1)
#结果
2.5

​ 如果实参是一个字典,可以使用**参数名的形式对其进行解包操作,会把字典转换成为类似关键参数的形式进行参数传递。对于这种形式的序列解包,要求实参字典中的所有键必须是函数形参的名称,或者与函数中两个型号的可变长度参数相对应。

s={'a':1,'b':2,'c':3}
def demo(a,b,c=4)
  print(a,b,c)
demo(**s)
#结果
1 2 3

三、变量的作用域

变量的作用域就是变量能够作用的空间

变量按照作用域划分:全局变量,局部变量

全局变量:在函数体外定义的变量为全局变量

全局变量在函数内外都能够使用,但在函数内不能直接修改全局变量, 如果在函数内修改全局变量,必须添加 global 关键字(python不推荐在函数内修改全局变量的值)

局部变量:在函数内定义的变量为局部变量

局部变量是在函数内定义的变量,在函数体外局部变量是无效的

在函数内定义的局部变量和函数外定义的全局变量是两个概念(变量同名)

a=1
def sum()
  a=3
#这里函数外的a和函数内的a是两个变量 

四、变量的文档注释和变量名

1、函数doc文档

函数doc文档是用于描述函数功能,是函数内的特殊注释

def sum(a,b):
  '''
  返回两个数的和
  '''
  return a+b

2、函数名的获取

__name__方法

>>> print(print.__name__)
print
>>>

3、函数doc文档的获取

__doc__方法

 总结

 

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • python中scikit-learn机器代码实例

    python中scikit-learn机器代码实例

    这篇文章给大家分享了关于python中scikit-learn机器的代码实例内容,有兴趣的朋友跟着小编测试下。
    2018-08-08
  • Python稀疏矩阵scipy.sparse包使用详解

    Python稀疏矩阵scipy.sparse包使用详解

    本文主要介绍了Python稀疏矩阵scipy.sparse包使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Tornado实现多进程/多线程的HTTP服务详解

    Tornado实现多进程/多线程的HTTP服务详解

    这篇文章主要介绍了Tornado实现多进程/多线程的HTTP服务详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2019-07-07
  • Python 线程池模块之多线程操作代码

    Python 线程池模块之多线程操作代码

    最近在做一个爬虫相关的项目,单线程的整站爬虫,耗时真的不是一般的巨大,运行一次也是心累,所以,要想实现整站爬虫,多线程是不可避免的,那么python多线程又应该怎样实现呢?今天小编给大家分享下实现代码,感兴趣的朋友一起看看吧
    2021-05-05
  • Python3.5文件修改操作实例分析

    Python3.5文件修改操作实例分析

    这篇文章主要介绍了Python3.5文件修改操作,结合实例形式分析了Python3.5针对txt文本文件的读写、修改等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • python OpenCV的imread不能读取中文路径问题及解决

    python OpenCV的imread不能读取中文路径问题及解决

    这篇文章主要介绍了python OpenCV的imread不能读取中文路径问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python 计算任意两向量之间的夹角方法

    Python 计算任意两向量之间的夹角方法

    今天小编就为大家分享一篇Python 计算任意两向量之间的夹角方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Django--权限Permissions的例子

    Django--权限Permissions的例子

    今天小编就为大家分享一篇Django--权限Permissions的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python3中的md5加密实例

    python3中的md5加密实例

    今天小编就为大家分享一篇python3中的md5加密实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 教你pycharm快速添加远程环境的详细过程

    教你pycharm快速添加远程环境的详细过程

    今天通过本文给大家分享pycharm快速添加远程环境的过程,通过在setting中选择设置符号add,具体详细过程跟随小编一起通过本文学习下吧
    2021-07-07

最新评论