专栏首页python3python函数详解

python函数详解

结构:

def  函数名():

    函数体

执行:

    函数名()

返回值:

return

一,函数中,遇到return终止函数

二,返回值,返回给了函数的调用者:函数名()

return单个值,返回单个值

return多个值,返回一个由这多个值组成的元祖

函数传参:

实参角度:

位置参数:从前至后一一对应

关键字参数:一一对应,不用按照顺序

混合参数:关键字参数一定要在位置参数的后面

形参角度:

位置参数:按照顺序,一一对应

默认参数:如果不传参则使用默认参数,传参则使用传入参数,常用的会设置默认参数

动态参数(万能参数):

    *args接收全部位置参数,聚合为元祖 **kwargs接收全部关键字参数,聚合为字典

    函数调用时,可迭代对象前加*,代表函数打散

    *args,默认参数,**kwargs顺序

函数的进阶:

名称空间:存储的是全局(py文件)的变量与值的对应关系

临时名称空间:当函数执行时,会在内存中临时开辟一个空间,此空间记录函数中变量与值的对应关系,随着函数的结束,临时名称空间而关闭

解释:

Python代码运行的时候遇到函数是怎么做的,从Python解释器开始执行之后,就在内存中开辟里一个空间,每当遇到一个变量的时候,就把变量名和值之间对应的关系记录下来,但是当遇到函数定义的时候,解释器只是象征性的将函数名读如内存,表示知道这个函数存在了,至于函数内部的变量和逻辑,解释器根本不关心。

  等执行到函数调用的时候,Python解释器会再开辟一块内存来储存这个函数里面的内容,这个时候,才关注函数里面有哪些变量,而函数中的变量回储存在新开辟出来的内存中,函数中的变量只能在函数内部使用,并且会随着函数执行完毕,这块内存中的所有内容也会被清空。

我们给这个‘存放名字与值的关系’的空间起了一个名字-------命名空间。

代码在运行伊始,创建的存储“变量名与值的关系”的空间叫做全局命名空间;

在函数的运行中开辟的临时的空间叫做局部命名空间。

python中的空间:

全局名称空间

临时(局部)名称空间

内置名称空间:len print 等内置函数

   加载顺序:内置名称空间-->全局名称空间-->函数执行时:临时名称空间    

作用域:

全局作用域:内置名称空间 全局名称空间

局部作用域:临时(局部)名称空间

   取值顺序:临时(局部)名称空间-->全局命名空间-->内置命名空间

    取值顺序满足就近原则

函数坑:

取值:局部只能引用全局的变量但是不能修改,修改会报错

global: 1,可以修改全局变量 2,在局部空间声明全局变量

nonlocal: 1,不能操作全局变量 2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变 3,子名称空间只能引用父级空间的变量,但是不能修改

函数的嵌套:

    程序执行到哪里,只要遇到函数名(),就执行

函数名的运用:

直接打印函数名,返回函数内存地址

函数名可以作为函数的参数

函数名可以作为函数的返回值

函数可以作为容器类型的元素

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python高阶函数

    高阶函数定义: 1.函数接收的参数是一个函数名; 2.函数返回的是一个函数名; 只要满足上述条件中的任意一个条件的函数均属于高阶函数

    py3study
  • python语法之函数

    函数:   将特定功能代码编写在一个函数里   便于阅读和复用   对一组表达特定功能表达式的封装   使程序模块化 python内置函数:   ...

    py3study
  • Python学习-函数

    函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数

    py3study
  • 【玩转腾讯云】万物皆可Serverless之关于云函数冷热启动那些事儿

    然后我们再来看一下腾讯云云函数文档里的简介 https://cloud.tencent.com/document/product/583/9199

    乂乂又又
  • 学习笔记:神经元模型(2)

    Python的Numpy package中提供了exp和maximum函数,因此,可以很方便地描述上述三个函数,如下图所示。

    Lauren的FPGA
  • 快速学习ES6新特性-函数优化

    cwl_java
  • 一次开发的意外逆向之旅

    笔者最近从事windows内核开发的时候因为功能需要,所以需要对PspSetCreateProcessNotifyRoutine回调函数数组进行遍历,于是笔者照...

    安恒信息
  • 这些年,你们一起踩过的坑(2)

    上次我们踩坑总结文章 这些年,你们一起踩过的坑(1) 受到了不少同学的认可。我也确信文中所涉及的问题是非常具有普遍性的,对绝大多数初学者都会有帮助。

    Crossin先生
  • 深入理解 JavaScript 回调函数 [每日前端夜话0xDF]

    JavaScript 回调函数是成为一名成功的 JavaScript 开发人员必须要了解的一个重要概念。但是我相信,在阅读本文之后,你将能够克服以前使用回调方法...

    疯狂的技术宅
  • 快速学习-Scala函数式编程

    在scala中,函数式编程和面向对象编程融合在一起,学习函数式编程式需要oop的知识,同样学习oop需要函数式编程的基础。[矛盾] 关系如下图:

    cwl_java

扫码关注云+社区

领取腾讯云代金券