当前位置: 首页 > news >正文

[python] 之 函数简介

函数是对程序逻辑进行结构化或过程化的一种编程方法,详细的说明请参考《python学习手册》,不能及时详细解释,望见谅!。

一、创建函数

1.1 def语句

def function(args):

  "documentation"

  function_body_suite

1.2 声明、定义与参数

  声明指定义了函数名和参数(名),未定义函数主体代码块

  定义指定义函数主体代码块

  参数主要包含位置参数,默认参数,非关键字参数(*args),关键字参数(**kargs),且在创建函数时,必须遵循这个顺序。非关键字参数(*args),关键字参数(**kargs)在创建函数中使用,可收集参数;在调用中使用,可解包参数。谨记默认可变参数陷阱。

1.3 前向引用

  python中,函数不存在前向引用的规则(谁先定义无影响,甚至是无顺序的嵌套),只需要满足在调用前定义即可

  def foo()

    print('foo')

    bar()

  def bar()

    print('bar')

   foo()

1.4 属性

  通过句点属性标识法进行访问和添加属性,函数的属性与函数对象有关,和函数的作用域无关

1.5 内嵌函数

  在函数体内创建另一个函数

1.6 函数装饰器

  @decorator(dec_opt_args)

  def function(args):

    "doc"

    body_suite

  #for example

  @g

  @f

  def foo():

    pass

foo = g(f(foo))

1.7 偏函数

  from functools import partial

  add1 = partial(add, 1)  # add1(x) = add(1, x)

  baseTwo = partial(int,base=2) #将参数base=2,固定为int函数的固定参数。

1.8 闭包 函数

  如果在一个内部函数里,对在外部作用域(但不是在全局可作用域)的变量进行引用,那么这个内部函数就是一闭包,并具有记忆性。

1.9 递归

  如果函数包含了对其自身的调用,该函数就是递归函数

  def factorial(n):

    if n == 1 or n == 0:

      return 1

    else:

      return (n*factorial(n-1))

1.10 函数式编程

  lambda [arg1 [, arg2, ...]]:expr

  lambda表达式返回可调用的函数对象。

1.11 内建函数

  map(),filter(),reduce()均创建了迭代语境,类似与for

  map(func, seqs)遍历序列中的每一个元素,并通过func函数处理,返回所有值组成的列表

  filter(func, seqs)遍历序列中的每一个元素,保留函数返回为布尔真的元素,将所有的值添加到一个列表中并返回

  reduce(func, seqs)取出序列的前两个元素,传入二元函数func来获得一个单一的值,然后将该值同下一个元素,再次传入二元函数func,一次运算处理序列,直至结束。

转载于:https://www.cnblogs.com/xiaofeiIDO/p/6009667.html

相关文章:

  • [转]SharePoint升级后错误,解决方案
  • RMQ算法模板
  • 自己复制粘贴出来的第一个java小程序
  • 深入浅出JVM
  • C#3.0介绍
  • CSS菜单横竖布局要点
  • XmlReader 读取器读取内存流 MemoryStream 的注意事项
  • Oracle推导参数Derived Parameter介绍
  • [转]如何进行软件需求分析
  • 虚拟机克隆后找不到eth0
  • 通过adgjmptw看产品设计的易用性
  • es6 module模块
  • Linux下流媒体服务器的搭建(HelixServer)
  • iOS-图文表并茂,手把手教你GCD
  • 昨天升级了Windows Media Player 的最新版11简体中文版
  • 《剑指offer》分解让复杂问题更简单
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular学习第一篇-----环境搭建
  • go语言学习初探(一)
  • JavaScript 一些 DOM 的知识点
  • PHP面试之三:MySQL数据库
  • Zepto.js源码学习之二
  • 初识MongoDB分片
  • 计算机在识别图像时“看到”了什么?
  • 如何使用 JavaScript 解析 URL
  • 源码安装memcached和php memcache扩展
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ![CDATA[ ]] 是什么东东
  • #Linux(帮助手册)
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (搬运以学习)flask 上下文的实现
  • (笔试题)分解质因式
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (汇总)os模块以及shutil模块对文件的操作
  • (六)c52学习之旅-独立按键
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)汇编语言——简单程序
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)setTimeout 和 setInterval 的区别
  • (转)菜鸟学数据库(三)——存储过程
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net wcf memory gates checking failed
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 事件模型教程(二)
  • .Net各种迷惑命名解释