Python 2 函数

本贴最后更新于 2576 天前,其中的信息可能已经时过境迁
  • Python 内置了很多函数,可通过函数名和参数直接调用

  • 交互式命令行可通过 help(fn) 查看 fn 函数的帮助信息

  • Python 内置数据类型转换函数,如 int(x) 可将 x 转为 int 类型,同理还有 float(x)str(x)bool(x)

  • 可以将函数名赋给一个变量,即给函数起 别名,再通过变量名调用指定的函数

  • 定义函数使用 def 语句,一次写出函数名、括号、括号中的参数即冒号 :,并在缩进块中编写函数体,返回值用 return 返回

  • 函数会在执行 return 后结束,并返回结果,没有 return 语句时会返回 Nonereturn None 可简写为 return

  • from <py file name> import <function name> 可以导入其他文件中定义的函数

  • pass 语句用于占位,什么都不做

  • isinstance(target, classes) 用于类型检查,返回布尔值

  • Python 中可同时返回多个值,实际上为一个 tuple

  • Python 的函数定义很灵活,除了正常的必选参数外,还有 默认参数可变参数,和 关键字参数

  • 默认参数必须在必选参数后,在定义函数时给参数设置默认值。当调用函数时如没有传入默认参数的值,就采用默认值

  • 默认参数的默认值必须为不可变对象,不能是 [] 等可变对象

  • 可变参数通过在参数前加 * 表示,如 cale(*numbers),在函数内部,参数 numbers 接收到的是一个 tuple。调用该函数时,可传入 0 到任意个参数

  • 可在 list 或 tuple 前加 * 转为可变参数传入函数中

  • 关键字参数即 含参数名的参数,在函数内部自动组装为一个 dict。在参数前加 ** 表示,如

      def person(name, **kw):
      	print('name:', name, 'kw', kw)
    
  • 调用上面函数时,可传入任意个关键字参数。如 person('AAA', city='Beijing', job='Engineer')

  • 在需要传入关键字参数时,可提前组装一个 dict,并在 dict 前加 ** 传入函数中

  • 命名关键字参数 用于限制关键字参数的参数名,需使用分隔符 ** 后面的参数被视为关键字参数

      >>>def person(name, age, *, city, job):
      ...		print(name, age, city, job)
      ...	
      >>>person('Jack', 24, city='Beijing', job='Engineer')
      Jack 24 Beijing Engineer
    
  • 如函数定义中已经有了一个 可变参数,后面跟着的关键字参数就无需添加分隔符 *

  • 调用含关键字参数的函数时,比如传入参数名。

  • 命名关键字参数可含有缺省值,如 `def person(name, *, city='Beijing', job)

  • 在 Python 中, 必选参数默认参数可变参数命名关键字参数关键字参数 可按顺序组合使用

  • 特别的是,Python 中的任意函数,都可以通过类似 func(*args, **kw 的形式调用

  • 在函数内部调用自身的函数为 递归函数

  • 所有的循环理论上都可以写成 循环 的方式,但逻辑不如递归清晰

  • 尾递归即 函数返回时,调用自身本身,切 return 语句不能包含表达式

  • 遗憾的是大多编程语言没有对尾递归做优化,多次调用自身会导致栈溢出

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    535 引用 • 672 回帖 • 1 关注
  • 函数
    6 引用 • 27 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6518 引用 • 29299 回帖 • 248 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 455 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 17 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖 • 2 关注
  • 996
    13 引用 • 200 回帖 • 1 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 132 关注
  • danl
    61 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖 • 1 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 621 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 126 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    333 引用 • 323 回帖 • 70 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 4 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    82 引用 • 122 回帖 • 614 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 228 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 8 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 317 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 53 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 427 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 47 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    25 引用 • 215 回帖 • 163 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    22 引用 • 31 回帖 • 3 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 199 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 131 关注