学习Python--函数进阶】的更多相关文章

函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值  定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的! 如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部 如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返…
在了解完了 Python函数基础篇之后,本篇的存在其实是为了整合知识,由于该篇的知识是否杂乱,故大家可以通过点开点连接直接进入其详细介绍,该篇主要大致的介绍一下几个知识点:  一.Python的迭代器和生成器 二.Python的内置函数 三.Python的open函数之文件处理 四.Python的递归函数 五.Python的高阶函数 六.Python的装饰器 一.Python的迭代器和生成器: 本篇我们介绍可迭代对象和迭代器对象--包括两者的定义及区别.为什么要有迭代器对象,其的用法是怎么样的…
python 函数 函数是组织好的,可重复使用的,用来实现单一或者相关联功能的代码段. 函数能提高应用的模块性和代码的重复利用率. 函数定义 python中函数定义有一些简单的规则: 函数代码块以def关键词开头,后面接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性的使用文档字符串-用于存放函数说明.如使用'''说明文字''' 函数内容以冒号:起始,并且缩进. return 表达式结束函数,选择性的返回一个值给调用方.…
一,递归函数: 做程序应该都知道,在一个函数的内部还可以调用其它函数,这叫函数的调用,但是有一种特殊的情况,在一个函数内部对自身函数的调用,我们成这为函数的递归调用. 在此,使用一个家喻户晓的例子来演示一下函数的递归调用------求阶乘: >>> func(1) 1 >>> func(10) 3628800 >>> func(100) 9332621544394415268169923885626670049071596826438162146859…
-------------------程序运行原理------------------- 1.模块的内建__name__属性,主模块其值为__main__,导入模块其值为模块名     1.创建时间,py文件比pyc文件新,则从新生成pyc.     2.magic num,做运行前版本测试,版本不同重新生成pyc.     3.PyCodeObject对象,源代码中的字符串,常量值,字节码指令,原始代码行号的对应关系.   2.LEGB规则     1.Local :本地         当前…
一,引言 现在我有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了:NameError: name 'm' is not defined 上面为什么会报错呢 ?现在我们来分析一下python内部的原理是怎么样: 我们回忆一下python代码的运行是哦湖遇到函数是怎么做的,从python解释器开始执行后,就在内存开辟一个空间,每当遇到一个变量的时候,就把变量名和值之间的关系记录下来,但是当遇到函数定义的…
函数的命名空间 著名的python之禅 Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't…
匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 lambda一般是嵌套在其他内容中,只是为了简化代码 函数作用域 理解全局变量和局部变量的概念 全局变量,定义的变量无缩进,即在代码层最外围: 局部变量,定义的变量有缩进,属于某个代码块中. 全局变量: a  = 1 def test(): print(a)    #结果为1 print(a)   …
代码在运行伊始,创建的存储“变量名与值的关系”的空间叫做全局命名空间,在函数的运行中开辟的临时的空间叫做局部命名空间 命名空间和作用域 命名空间的本质:存放名字与值的绑定关系 >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is be…
递归函数 什么是递归函数 如果一个函数,可以自己调用自己,那么这个函数就是一个递归函数. 递归,递就是去,归就是回,递归就是一去一回的过程. 递归函数的条件 一般来说,递归需要边界条件,整个递归的结构中要有递归前进段和递归返回段.当边界条件不满足,递归前进,反之递归返回.就是说递归函数一定需要有边界条件来控制递归函数的前进和返回. 定义一个简单的递归函数 # 定义一个函数 def recursion(num): print(num) if num == 0: return 'ok' # 这个函数…
---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返回的结果就是x/y的商和模,显示y不能等于0,等于0就会报错 5.内置函数:pow(a,b)两个参数的情况下,表示a的b次幂 pow(x,y,z)三个参数的情况下,表示x的y次幂的值,然后再对z取模得出结果 6.内置函数:round(x,y)表示x是一个浮点型的小数,y表示保留几位小数,最后输出保留…
1.函数文档字符串,用于存放函数的说明,一般写在第一行 2.函数调用:函数名+参数列表(函数的参数分实际参数和形式参数,str就是形式参数,则'welcome 头 python'就是实际参数) 参数需要一一对应,形式参数有几个,就需要传几个实际参数,否则会报错,如图有一个形式参数x,却传了两个实际参数1,2    在调用函数时,缺省参数的值如果没有传入,则被认为是默认值 如果调用函数和定义函数同时有值得情况下,默认值就会被覆盖,输出以调用值的参数为准   在传值时从左到右传值     如果这样就…
一.函数参数-动态传参       1.形参:         *   在形参位置, 表示此参数为不定参数,接受的是位置参数            并且接收到的位置参数的动态传参都是元组 def func(* jiemu): # 在形参这里把接受过来的实参进行聚合,集合成一个元组 print(jiemu) func('奇葩说','知识就是力量','老梁说故事','吐槽大会') # 结果:('奇葩说', '知识就是力量', '老梁说故事', '吐槽大会')  **   在形参表示动态传参 -- 关…
函数的命名空间和作用域 引言 现在有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了: NameError: name 'm' is not defined 上面为什么会报错呢?现在我们来分析一下python内部的原理是怎么样: 我们首先回忆一下Python代码运行的时候遇到函数是怎么做的,从Python解释器开始执行之后,就在内存中开辟里一个空间,每当遇到一个变量的时候,就把变量名和值之间对应的关系…
1.*args # 位置参数,计算x2的函数 def power(x): return x * x p = power(5) print(p) # 把power(x)修改为power(x, n),用来计算xn def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s p1 = power(5, 2) p2 = power(5, 3) print(p1) print(p2) # 默认参数 # 使用默认参数有什么好处?最大的好处…
# 调用函数 # 可以直接从Python的官方网站查看文档: # http://docs.python.org/3/library/functions.html#abs n = abs(100) # 求绝对值的函数abs, abs()有且仅有1个参数 print(n) n1 = abs(-20) print(n1) l = max(1, 2) # max函数max()可以接收任意多个参数,并返回最大的那个 print(l) # 数据类型转换 i = int(') print(i) i1 = in…
函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很多参数,我们就要写很多,很麻烦怎么办呢,我们可以考虑使用动态参数 形参的第三种:动态参数 动态参数分为两种: 1.动态接受位置参数 首先我们来回顾下位置参数 def eat(a,b,c): print('我想吃%s%s%s'%(a,b,c)) eat('大米饭','中米饭','小米饭') 现在有个问题,你们看我这体型也知道吃的不止这些,但是为了让我能够吃饱我们就需要多来些食物,这时我们就要用到…
知识内容: 1.函数即变量 2.嵌套函数 3.lambda表达式与匿名函数 4.递归函数 5.函数式编程简介 6.高阶函数与闭包 一.函数即变量 1.变量的本质 声明一个变量,在python里本质上讲是把变量对应的值和变量名联系起来,变量里保存的不是值,而是值对应的地址:而赋值时从本质上讲是把变量名对应的值的内存地址赋给了另一个变量 a = 1 b = a 可以这样理解,变量名相对于酒店里的房牌号,而变量名对应的值就相对于对应的房间 在上图中,刚开始a和b都是指向1对应的内存位置,后来把赋值a为…
几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >>> g = lambda x,y:x+y #x+y,并返回结果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16 lambda函数的使用方法: 在lambda后面直接跟变量 变量后面是冒号 冒号后面是表达式,表达式计算…
---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返回的结果就是x/y的商和模,显示y不能等于0,等于0就会报错 5.内置函数:pow(a,b)两个参数的情况下,表示a的b次幂 pow(x,y,z)三个参数的情况下,表示x的y次幂的值,然后再对z取模得出结果 6.内置函数:round(x,y)表示x是一个浮点型的小数,y表示保留几位小数,最后输出保留…
一.函数即变量 def say(name): print(name)ybq = say #可以被赋值给其他变量ybq('Amily') #调用函数 函数名:say 函数体:第1-2行 返回值:return 后的值 函数的内存地址:当函数体被读进内存后的保存位置,它由标识符即函数名say引用,                                                   也就是说say指向的是函数体在内存内的保存位置. 函数名加括号:  例如say(),函数的调用方法,只有见…
lambda表达式(匿名函数表达式) 作用:创建一个匿名函数对象.同def类似,但不提供函数名. 语法:lambda [形参1,形参2,...] : 表达式 语法说明 lambda 只是一个表达式,它用来创建一个函数对象. 当lambda表达式调用时,先执行冒号后的表达式,并返回表达式的结果的引用. lambda 表达式创建的函数只能包含一条表达式. lambda 表达式比函数简单,且可以随时创建和销毁,有利于减少程序的偶合度. 把lambda函数赋值给一个变量 # 定义一个加法函数,并把值赋给…
返回目录 本篇索引 (1)闭包 (2)装饰器 (3)生成器 (4)协程 (1)闭包 闭包(closure)是很多现代编程语言都有的特点,像C++.Java.JavaScript等都实现或部分实现了闭包功能,很多高级应用都会依靠闭包实现. 一般专业文献上对闭包的定义都比较拗口,比如:“将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象称为闭包.” 其实,简单来说,你可以将闭包看成是一个轻载的类,这个类只有一个函数方法,并且只有为数不多的几个成员变量. 闭包的优点是:实现起来比类稍微轻巧一…
高阶函数 什么是高阶函数 高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数. 高阶函数可以是你使用def关键字自定义的函数,也有Python系统自带的内置高阶函数. 自定义一个高阶函数 我们下面的例子中,函数 senior 的参数中有一个是函数,那么senior就是一个高阶函数:函数 tenfold 的参数不是函数,所以tenfold就只是一个普通的函数. # 定义高阶函数 def senior(func, container)…
# 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n # 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出. def fact(n): if n==1: return 1 return n * fact(…
def my_abs(x): if x >= 0: return x else: return -x print(my_abs(-99)) # 空函数 def nop(): pass # 参数检查 def my_abs(x): if not isinstance(x, (int, float)): raise TypeError("bab operand type") if x >= 0: return x else: return -x # 返回多个值 import ma…
迭代器 什么是迭代器 能被 next 指针调用,并不断返回下一个值的对象,叫做迭代器.表示为Iterator,迭代器是一个对象类型数据. 概念 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代. 特征 迭代器并不依赖索引,而通过 next 指针迭代所有数据,一次只取一个值,大大节省空间. 惰性序列 惰性序列是指没有一次性的把所有数据都放在序列中,而是遍历一个放一个这样的序列,range对象和迭代器能够产生惰性序列. 检查可迭代对象 fo…
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def 是固定且不可变的 函数名:函数名是包含字母.数字.下划线的任意组合,(不能以数字开头) 函数调用: 返回值 = 函数名 (参数1,参数2) 函数返回值: 1- return的作用:结束一个函数的执行 2- 首先返回值可以是任何的数据类型 3- 函数可以有返回值:如有返回值,必须要用变量接受才有效果…
这篇文章是我关于学习python函数的一些总结 一.随着函数的引入,这里首先要说的就是全局变量和局部变量了. 什么是全局变量.什么是局部变量: 全局变量就是全局都能调用的变量,一般都在文件的开头,顶头写. 局部变量就是在函数内定义的变量,其实这里不完全对,因为有一个关键字可以改变这一属性,就是global,如果局部变量的前面加入global声明的话,那么这个局部变量就变成了全局变量. 下面来看一个例子: name = "全局变量" def test(): name = "局部…
Python(函数进阶) 一.函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # *args这里是一个元组 print(f"名门正派都有:{arg}") func("少林","武当","峨眉") # 名门正派都有:("少林","武当","峨眉") ---…