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

我想自学建网站/seo助力网站转化率提升

我想自学建网站,seo助力网站转化率提升,网站开发 只要,内蒙古网站建设百度Python——函数用法和底层分析(下)077. 参数的几种类型 Ⅰ位置参数默认值参数命名参数078. 参数的几种类型 Ⅱ可变参数强制命名参数080. lambda表达式和匿名函数080. eval()函数081. 递归函数082. 递归函数_阶乘计算083. 嵌套函数(内部函数&a…

Python——函数用法和底层分析(下)

  • 077. 参数的几种类型 Ⅰ
    • 位置参数
    • 默认值参数
    • 命名参数
  • 078. 参数的几种类型 Ⅱ
    • 可变参数
    • 强制命名参数
  • 080. lambda表达式和匿名函数
  • 080. eval()函数
  • 081. 递归函数
  • 082. 递归函数_阶乘计算
  • 083. 嵌套函数(内部函数)
  • 084. nonlocal关键字
  • 085. LEGB规则


077. 参数的几种类型 Ⅰ

位置参数

  函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。

默认值参数

  我们可以为某些参数设置默认值,这样这些参数在传递时就是可选的,称为“默认值参数”。默认值参数放到位置参数后面。

命名参数

  我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。

# 参数的类型
# 位置参数和命名参数
def test01(a,b,c,d):print("{0}-{1}-{2}-{3}".format(a,b,c,d))
test01(10,20,30,40)   # 位置参数
# test01(10,20)   # 参数个数不匹配
test01(d=90,c=40,a=20,b=50)   # 命名参数
# 默认值参数
def test02(a,b,c=5,d=4):   # 默认值参数,必须位于其他参数后面print("{0}-{1}-{2}-{3}".format(a, b, c, d))
test02(2,3)   # 没有给c,d赋值时,c,d取默认值参数

078. 参数的几种类型 Ⅱ

可变参数

  可变参数指的是“可变数量的参数”。分两种情况:

  1. *param(一个星号) ,将多个参数收集到一个 “元组” 对象中。
  2. **param(两个星号) ,将多个参数收集到一个 “字典” 对象中。

强制命名参数

  在带星号的“可变参数”后面增加新的参数,必须在调用时“强制命名参数”。


080. lambda表达式和匿名函数

  lambda表达式可以用来声明匿名函数。 lambda函数是一种简单的、在同一行中定义函数的方法。lambda函数实际生成了一个函数对象。
  lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。
  lambda表达式的基本语法如下:

lambda   arg1,arg2,arg3...   :   <表达式>

  arg1/arg2/arg3为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果。
# lambda表达式和匿名函数
f = lambda a,b,c:a+b+c
print(f(5,6,7))def test01(a,b,c):   # 同上return a+b+cg = [lambda a:a*2,lambda b:b+8]
print(g[0](2),g[1](5))h = [test01,test01]    # 函数也是对象
print(h[0](3,4,5))

080. eval()函数

  • 功能:将字符str当成有效的表达式来求值并返回计算结果。
  • 语法:
      eval(source[, globals[, locals]]) -> value
  • 参数:
      source:一个Python表达式或函数compile()返回的代码对象。
      globals:可选。必须是dictionary。
      locals:可选。任意映射对象。
# eval()函数
s = "print('abc')"   # s也可是文件
eval(s)   # s从客户端发来的a = 10
b = 20
c = eval("a+b")
print(c)dict1 = dict(a=40,b=50)
d = eval("a+b",dict1)   # 如果没加dict1,则计算的a和b是10和20
print(d)

081. 递归函数

  递归函数指的是:自己调用自己的函数,在函数体内部直接或间接地自己调用自己。

  每个递归函数必须包含两个部分:

  1. 终止条件
      表示递归什么时候结束。一般用于返回值,不再调用自己。
  2. 递归步骤
      把第n步的值和第n-1步相关联。
# 递归函数
def test01(n):print("test01:",n)if n==0:print("over")else:test01(n-1)print("test01***",n)
test01(4)

运行结果:
pic5-1


082. 递归函数_阶乘计算

# 使用递归函数,计算阶乘
def factorial(n):if n==1:return 1else:return n*factorial(n-1)
result = factorial(5)
print(result)

083. 嵌套函数(内部函数)

  嵌套函数:在函数内部定义的函数。

一般在什么情况下使用嵌套函数?

  1. 封装 - 数据隐藏
      外部无法访问“嵌套函数”
  2. 贯彻DRY(Don’t Repeat Yourself)原则
      嵌套函数,可以让我们在函数内部避免重复代码。
  3. 闭包
# 嵌套函数(内部函数)
def outer():print("outer running")def inter01():print("inter01 running")inter01()   # 嵌套函数,仅能在outer函数内调用
outer()# 打印中英文名字
# 方法一 定义两个方法
def printChineseName(name,familyName):print("{0}{1}".format(familyName,name))
def printEnglishName(name,familyName):print("{0}{1}".format(name,familyName))
# 方法二 嵌套函数
def printName(isChinese,name,familyName):def inter_print(a,b):print("{0}{1}".format(a,b))if isChinese:inter_print(familyName,name)else:inter_print(name,familyName)
printName(True,"三","张")
printName(False,"Jonny","Green")

084. nonlocal关键字

  • nonlocal:用来声明外层的局部变量
  • global:用来声明全局变量
# nonlocal、global关键字的用法
a = 100
def outer():b = 10def inter():nonlocal b   # 声明外部函数的局部变量bprint("inter b:",b)   # 可直接调用外部变量b = 20   # 声明后可修改b的值global a   # 声明全局变量aa = 200   # 声明后可修改a的值inter()print("outer b:",b)   # b的值为20,此时b的值已被修改
outer()
print("a:",a)   # a的值为200,此时a的值已被修改

085. LEGB规则

  Pthon在查找“名称”时,是按照LEGB规则查找的:

Local → Enclosed → Global → Built in

  Local:指的就是函数或者类的方法内部

  Enclosed:指的是嵌套函数(一个函数包裹另一个函数,闭包)

  Global:指的是模块中的全局变量

  Built in :指的是Python为自己保留的特殊名称

  如果某个name映射在 局部(local)命名空间 中没有找到,接下来就会在 闭包作用域(enclosed) 进行搜索,如果闭包作用域也没有找到,Python就会到 全局(global)命名空间 中进行查找,最后会在 内建(built-in)命名空间 搜索(如果一个名称在所有命名空间中都没有找到,就会产生一个 NameError )。

# LEGB规则 Local → Enclosed → Global → Built in
# str = "global str"   # 查找“名称”时,第3个查找(Global )
def outer():# str = "outer"   # 查找“名称”时,第2个查找(Enclosed)def inner():# str = "inner"   # 查找“名称”时,第1个查找(Local)print(str)inner()
outer()

运行结果:
pic5-2
上图为第4个查找(Built in),如果还是找不到,则产生NameError。

http://www.lbrq.cn/news/1479493.html

相关文章:

  • 广州小企业网站制作/b站视频推广怎么买
  • 浦口区网站建设技术指导/宁波seo网站推广软件
  • wordpress语言包更新/昆山seo网站优化软件
  • 北京网站优化专家/推广图片制作
  • 科技创新的重要性和意义/优化大师免费版下载
  • 网站seo方案模板/微商软文范例大全100
  • 陕西网站建设品牌公司推荐/免费有效的推广网站
  • 山东微商网站建设/数据指数
  • 深圳微商城网站设计多少钱/免费的seo网站
  • 做网站宣传的公司/可以免费打广告的网站
  • b2c平台网站建设/培训机构哪家好
  • 自己建设网站模版/做网站建设的公司
  • 毕业设计题目怎么选题/品牌seo培训咨询
  • 泰州做网站需要多少钱/seo搜索引擎推广什么意思
  • wordpress做外贸站/怎么自己弄一个网站
  • 独立网站建设/网络营销服务平台
  • html网站的直播怎么做/windows优化大师收费吗
  • 赣州淘捷网络科技有限公司/优化师的工作内容
  • 云南省中国建设工程造价管理协会网站/长尾词和关键词的区别
  • 基层人武部正规化建设/厦门搜索引擎优化
  • 山西省建设厅官方网站/关闭站长工具seo综合查询
  • ...无锡网站制作/关键词排名怎么快速上去
  • 中小企业网站建设报告/网站建设合同
  • seo排名快速上升/成都网站关键词推广优化
  • 电子元器件网站建设/模板自助建站
  • 普集网站开发/网上怎么做广告
  • 做视频网站可行吗/广州搜索排名优化
  • 北京网站制作基本流程/站长统计是什么意思
  • 松阳县建设局网站/找代写文章写手
  • 定制头像的网站/汕头企业网络推广
  • Gitee
  • 【Kubernetes 指南】基础入门——Kubernetes 集群(二)
  • spring boot 启动报错---java: 无法访问org.springframework.boot.SpringApplication 错误的类文件
  • 【东枫科技】DreamHAT+
  • 软件工程:软件复用
  • C#反射的概念与实战