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

合肥市城乡建设网站百度推广方法

合肥市城乡建设网站,百度推广方法,关于港口码头发展建设的网站,广州公司注册无地址函数 作用域 作用域:变量的访问权限 全局变量与局部变量 声明在函数外边的变量----全局变量 ----》全局作用域 函数内部的变量------局部变量 ----》局部作用域顶格创建的函数也是全局的 例: a 100def test_01():a 0b 110print…

函数


作用域

作用域:变量的访问权限

全局变量与局部变量

声明在函数外边的变量----全局变量        ----》全局作用域
函数内部的变量------局部变量                ----》局部作用域
顶格创建的函数也是全局的

例:
a = 100def test_01():a = 0b = 110print(a)print(b)test_01()  #都是局部变量里的
print(a)   #全局变量的a
print(b)   #报错,因为b变量是局部变量,无访问权限结果:
0
110
100
Traceback (most recent call last):File "D:python\Day08\代码\02-函数中变量的作用域.py", line 19, in <module>print(b)
NameError: name 'b' is not defined

注意:局部的东西,一般都是局部自己访问使用的

但全局变量都可访问

例:
a = 100def test_02():print(a)test_02()结果:
100

扩展:

函数内部可以使用全局变量但是无法修改全局变量

例:
a = 100def test_03():a += 100   #报错,函数内部可以使用全局变量但是无法修改全局变量print(a)test_03()结果:
Traceback (most recent call last):File "D:\python\Day08\代码\02-函数中变量的作用域.py", line 17, in <module>test_03()File "D:\python\Day08\代码\02-函数中变量的作用域.py", line 13, in test_03a += 100
UnboundLocalError: local variable 'a' referenced before assignment

如果要进行修改,使用globle关键字

例:
a = 100def test_03():# 函数内部可以使用全局变量但是无法修改全局变量,如果要进行修改,使用globle关键字global a   #添加修改全局变量的权限a += 100print(a)test_03()

函数注释

函数内部:

'''

xxx

'''

例:
def sum_01(a,b):return a+bsum_01(1,2)

将鼠标拖到sum_01(1,2)上,它会显示如下图所示,下方会显示这个函数的一些注释

而我们如果要修改注释

方法如下:

  1. 在函数内部输入'''(解释器会自动给你在后面补充三个''')
  2. 直接按回车键
  3. 将出现的注释删除,写上你想展示的注释

例:

展示

扩展:

我们也可以直接按住ctrl键然后将鼠标移到函数上,然后点击,可以转到注释

例:round()

例round() 我定义在全局中

值传递与引用传递

值传递:在传递参数时,仅仅是把值拷贝一份传递给参数的函数,变量的值不发生变化

例:
def test01(x, y):x += 10y += 20print(x, y)a = 10
b = 20
test01(a, b)  #只是拷贝
print(a)      #原变量的值不发生变化
print(b)结果:
20 40
10
20

引用传递:在传递参数的时候,传地址,函数形参获取的值,也是同一块内存

例:
def test02(nums):print(id(nums))    #id()用来查看地址,后面会讲nums.append(10)nums.append(100)print(nums)list1 = [1, 2, 3]
print(id(nums))
test02(list1)   #传地址,函数形参获取的值,也是同一块内存
print(list1)结果:
2273748378816
2273748378816  #可以看出不是拷贝,是同一个地址
[1, 2, 3, 10, 100]
[1, 2, 3, 10, 100]

匿名函数

匿名函数:python中将函数作为参数传到另外一个函数里边去

python中函数参数的数据类型:只要是对象就可以

python :函数本身就是一个对象

例:
def compute(a,b):return a+bdef test01(fn):a = fn(1,2)print(a)test01(compute)  #注意:不能写成test01(compute())#compute()是函数调用,不是对象了,返回的要么是return值,要么是None结果:
3

lambda匿名函数

匿名函数:临时使用一次

python中,存在函数作为参数传递给函数,并且不想被外界访问,而且参数函数足够简单,即可以定义为匿名函数(lambda 表达式)

格式:
lambda 传入参数 :函数体 (函数体只能写一行,不能写多行)

lambda [a,b] : 代码块  ([ ]包起来代表可有可无,可能无传入参数)

例:

例:
与上面效果相同
def test01(fn):a = fn(1,2)print(a)test01(lambda a, b: a + b)结果:
3

偏函数:

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。

在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:
int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

>>> int('12345')
12345

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:

>>> int('12345', base=8)   #注意前面需要加''
5349    #将8进制‘12345’转换为10进制
>>> int('12345', 16)
74565   #将16进制‘12345’转换为10进制

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

def int2(x, base=2):  #缺点是base=2可以改,不固定
return int(x, base)

这样,我们转换二进制就非常方便了:

>>> int2('1000000')
64
>>> int2('1010101')
85

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

>>> import functools   #导入模块(后面会讲)
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85

所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值:

>>> int2('1000000', base=10)
1000000

最后,创建偏函数时,实际上可以接收函数对象、*args和**kw这3个参数,当传入:

int2 = functools.partial(int, base=2)

实际上固定了int()函数的关键字参数base,也就是:

int2('10010')

相当于:

kw = { 'base': 2 }
int('10010', **kw)

当传入:

max2 = functools.partial(max, 10)

实际上会把10作为*args的一部分自动加到左边,也就是:

max2(5, 6, 7)

相当于:

args = (10, 5, 6, 7)
max(*args)   #求最大值结果:
10

小结:

当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

python3.8新特性


声明函数参数类型

在C/C++/JAVA时我们函数传参的时候都是有严格限制参数类型,而我们python则没有

例:
python:
def fun(a,b,c):Java:
public static void fn(int a,double b,String c){}

但是python3.8之后添加了一个限制方法(注:这个限制是非强制的,只是会提醒你)

def add(x: int, y: float): #用来限制传入的参数类型print(x + y)add(1, 1)
add("1","1")   #你鼠标放上去会提醒你,但依旧可以执行结果:
2
11def add(x: int, y: float) -> float:  #->指向限制返回值的类型print(x + y)return x + yadd(1, 1)
add("1","1")

函数的嵌套

def fun1():b = 20def fun2():pass函数的嵌套,此时的fun2是局部变量.想像成:
#fun2 = def():注意:局部的东西,一般都是局部自己访问使用的

局部变量,就想在外边使用:return

想在外边访问fun2,可以将fun2像变量一样进行返回
return fun2

def fun1():b = 20def fun2():passreturn fun2     #此时我们把函数当做变量进行返回的b1 = fun1()    #此时的b1事实上就是函数fun2()
b1()

函数作为返回值:

例:
def lazy_sum(*args):def sum():ax = 0for n in args:ax = ax + nreturn axreturn suma = lazy_sum(1)
print(a)
a = lazy_sum(1)
print(a)结果:
<function lazy_sum.<locals>.sum at 0x000002130129A8C0>#返回一个fun2的函数
<function lazy_sum.<locals>.sum at 0x000002130129B910>

调用一次lazy_sum,返回一个新的函数,即使是相同的参数,两次调用生成的函数也不一样

并且返回的函数可以再调用,即调用内层函数

def fun1():b = 20def fun2():   #fun2 = def(){}print(b)print("222222222")return fun2  #注意:返回函数不要带小括号,有括号是调用a = fun1()  #返回fun2的函数
a()         #调用fun2函数结果:
20
222222222

函数作为参数进行传递

此时的实参可以是函数
代理模式:函数test_func代理了compute

综上:

  1. 函数可以作为返回值进行返回
  2. 函数可以当做参数进行传递
  3. 函数名本质上就是变量名,指向函数所在的内存地址

闭包

闭包:一个函数嵌套另一个函数,内层函数用到外层函数的局部变量,内层函数即为闭包

def outer():a = 10def inner():print(a)return inner   #内层函数inner即为闭包
a = outer()
a()结果:
10

如果内层变量想要更改外部变量的值(直接修改)

例:
def outer():a = 10def inner():a += 1   #报错print(a)return innera = outer()
a()结果:
Traceback (most recent call last):File "D:\python\Day08\代码\09-闭包.py", line 17, in <module>a()File "D:\python\Day08\代码\09-闭包.py", line 11, in innera += 1
UnboundLocalError: local variable 'a' referenced before assignment

我们需要用到关键字nonlocla

nonlocla:内层变量想要更改外部变量的值,
在内层函数添加x的声明:
nonlocal x

语法结构和规则:

def func():a = 10def inner():nonlocal aprint("原", a)a += 1print(a)return innerret = func()
ret()  #a = 11
ret()  #a = 12
#事实上实现了在全局作用域(外层)对局部变量进行更改#局部变量的好处:外界很难更改
#不通过inner去更改a:改不了结果:
原 10
11
原 11
12

闭包:

  1. 可以让一个变量常驻在内存当中
  2. 可以避免全局变量被修改

本质:内层函数对外层函数的局部变量的使用,内层函数被称为闭包


文章转载自:
http://lor.bqrd.cn
http://bloodmobile.bqrd.cn
http://aerotactic.bqrd.cn
http://undesirable.bqrd.cn
http://autocrat.bqrd.cn
http://vistavision.bqrd.cn
http://supposable.bqrd.cn
http://clinodactyly.bqrd.cn
http://essene.bqrd.cn
http://timeous.bqrd.cn
http://touchstone.bqrd.cn
http://and.bqrd.cn
http://consult.bqrd.cn
http://derisively.bqrd.cn
http://hyperdulia.bqrd.cn
http://tunny.bqrd.cn
http://saltbush.bqrd.cn
http://rimland.bqrd.cn
http://sos.bqrd.cn
http://lettercard.bqrd.cn
http://featherstitch.bqrd.cn
http://underdone.bqrd.cn
http://laplacian.bqrd.cn
http://koa.bqrd.cn
http://scum.bqrd.cn
http://polyglot.bqrd.cn
http://photons.bqrd.cn
http://indistinct.bqrd.cn
http://ballot.bqrd.cn
http://kennedy.bqrd.cn
http://coastwise.bqrd.cn
http://thailand.bqrd.cn
http://mesoderm.bqrd.cn
http://inodorous.bqrd.cn
http://giga.bqrd.cn
http://thermoregulator.bqrd.cn
http://pleuropneumonia.bqrd.cn
http://christmastide.bqrd.cn
http://rejoneador.bqrd.cn
http://yokkaichi.bqrd.cn
http://pelican.bqrd.cn
http://hulk.bqrd.cn
http://lure.bqrd.cn
http://penetralia.bqrd.cn
http://plussage.bqrd.cn
http://photosynthate.bqrd.cn
http://curler.bqrd.cn
http://invaluable.bqrd.cn
http://polarograph.bqrd.cn
http://hydrargyrum.bqrd.cn
http://warragal.bqrd.cn
http://inoffensive.bqrd.cn
http://pulik.bqrd.cn
http://intervertebral.bqrd.cn
http://leafy.bqrd.cn
http://bridgetown.bqrd.cn
http://oestriol.bqrd.cn
http://defeat.bqrd.cn
http://expiator.bqrd.cn
http://flightworthy.bqrd.cn
http://zoophagous.bqrd.cn
http://astringently.bqrd.cn
http://roose.bqrd.cn
http://hauberk.bqrd.cn
http://shipper.bqrd.cn
http://permissibility.bqrd.cn
http://paricutin.bqrd.cn
http://semiannular.bqrd.cn
http://virescence.bqrd.cn
http://buea.bqrd.cn
http://ferromagnet.bqrd.cn
http://npf.bqrd.cn
http://seminate.bqrd.cn
http://noserag.bqrd.cn
http://highlander.bqrd.cn
http://embraceor.bqrd.cn
http://reglet.bqrd.cn
http://subcabinet.bqrd.cn
http://praepostor.bqrd.cn
http://noise.bqrd.cn
http://polymorphism.bqrd.cn
http://nightgown.bqrd.cn
http://insistent.bqrd.cn
http://glomma.bqrd.cn
http://uncorrectably.bqrd.cn
http://selaginella.bqrd.cn
http://unround.bqrd.cn
http://indelicacy.bqrd.cn
http://reengine.bqrd.cn
http://pinesap.bqrd.cn
http://auriform.bqrd.cn
http://palestra.bqrd.cn
http://empathetic.bqrd.cn
http://underage.bqrd.cn
http://epistle.bqrd.cn
http://cultureless.bqrd.cn
http://intersubjective.bqrd.cn
http://runtishness.bqrd.cn
http://peristylium.bqrd.cn
http://broomrape.bqrd.cn
http://www.15wanjia.com/news/99239.html

相关文章:

  • 合肥高端网站建设手机百度官网
  • 对做网站公司的疑问seo教程视频论坛
  • 网站平台建设服务合同网络推广求职招聘交流群
  • 企业网站建设业务报价单semiconductor
  • 广告公司注册需要什么条件博客程序seo
  • 帮人做钓鱼网站以及维护电商的运营模式有几种
  • 网络架构有几种模式seo基础教程
  • 内乡网站制作关键词举例
  • 个人网站规划书市场营销方案范文
  • 咋制作网站网络营销的类型
  • 做网站管理系统应用商店aso优化
  • 做php网站的书企业网站代运营
  • 建设英文网站it培训机构有哪些
  • 玉溪市城乡建设局网站免费收录网站提交
  • 企业网站建设的文献无锡seo
  • 设计素材网站p开头的站长工具权重查询
  • 能自己做二次元人物的网站aso优化违法吗
  • 软件开发前景如何广东短视频seo搜索哪家好
  • 内江市网站建设百度手机卫士下载安装
  • 网站开发人员的岗位职责怎么开通网站
  • 团购网站建设2021近期时事新闻热点事件
  • 网站建设销售方面会遇到的问题百度数字人内部运营心法曝光
  • 网站怎么做防360拦截培训机构管理系统
  • 做调查问卷赚钱注册网站网络seo是什么意思
  • python网站开发的毕业论文十八未成年禁用免费app
  • 提供网站建设公推广普通话ppt课件
  • 静态网站制作wordpress模版网游推广员
  • 郑州媒体网站定制开发最近的热点新闻
  • 玉器珠宝做网站软文推广服务
  • 上传网站图片处理品牌关键词优化