您身边的网站建设专家
成功案例

【建站服务】专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-内江上往建站-域名申请

日期: 2022-09-21 05:36:05 浏览数:4


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-内江上往建站

网站建设.png

  1. 请注意:上面特意用了引号标准的部分,对可变类型或者引用的操作修改的是传过来的对象的属性。

    可以这么理解(例子有点随意):我在画画,小明来了说他也要画,我让他和我一起画,他如果和我在同一个画板上画,那么我们两的画就会同时改变。 而如果他说不,我要另外用一块画板,然后重新拿了块画板画起来了,那么我们两的画自然就不一样了。

    同理可更改类型 的属性进行操作,这只是对引用的内存块里面的值进行操作,引用并没变,自然所有引用它的对象的值都变了。而对不可更改的对象进行操作,因为它引用的内存块只是对应一个固定的值,不能进行修改,要重新复制实际上就是更新引用。

    如果我们运行下面的例子,对可更改类型的引用进行修改,结果就不一样了。

    # 可写函数说明def changeme( mylist ):
       "修改传入的列表"
       mylist = [1,2,3,4]
       print ("函数内取值: ", mylist)
       return
     # 调用changeme函数mylist = [10,20,30]changeme( mylist )print ("函数外取值: ", mylist)

    结果

    函数内取值:  [1, 2, 3, 4]函数外取值:  [10, 20, 30]
    Mr.Wang

       Mr.Wang

      992***591@qq.com

    5年前 (2017-11-21)
  2.    Rosevil1874

      157***11424@163.com

    131

    对于变量作用域,变量的访问以 L(Local) –> E(Enclosing) –> G(Global) –>B(Built-in) 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

    观察以下几个例子,均从内部函数输出变量 x:

    1. 局部作用域

    x = int(3.3)x = 0def outer():
        x = 1
        def inner():
            x = 2
            print(x)
        inner()outer()

    执行结果为 2,因为此时直接在函数 inner 内部找到了变量 x。

    2.闭包函数外的函数中

    x = int(3.3)x = 0def outer():
        x = 1
        def inner():
            i = 2
            print(x)
        inner()outer()

    执行结果为 1,因为在内部函数 inner 中找不到变量 x,继续去局部外的局部——函数 outer 中找,这时找到了,输出 1。

    3.全局作用域

    x = int(3.3)


执行结果为 2,因为此时直接在函数 inner 内部找到了变量 x。


2.闭包函数外的函数中


x = int(3.3)


x = 0

def outer():

    x = 1

    def inner():

        i = 2

        print(x)

    inner()


outer()

执行结果为 1,因为在内部函数 inner 中找不到变量 x,继续去局部外的局部——函数 outer 中找,这时找到了,输出 1。


3.全局作用域


x = int(3.3)

x = 0

def outer():

    o = 1

    def inner():

        i = 2

        print(x)

    inner()


outer()

执行结果为 0,在局部(inner函数)、局部的局部(outer函数)都没找到变量 x,于是访问全局变量,此时找到了并输出。


4. 内建作用域


x = int(3.3)

g = 0

def outer():

    o = 1

    def inner():

        i = 2

        print(x)

    inner()


outer()

执行结果为 3,在局部(inner函数)、局部的局部(outer函数)以及全局变量中都没有找到变量x,于是访问内建变量,此时找到了并输出。


Rosevil1874

   Rosevil1874


  157***11424@163.com


5年前 (2017-12-13)

   ls


  moo***huan@foxmail.com


76

函数内可以访问全局变量,但不能更新(修改)其值!


例 :


a = 10

def sum ( n ) :

   n += a

   print ('a = ', a, end = ' , ' )

   print ( 'n = ', n )

  

sum(3)

输出 :


a =  10 , n =  13

如果引用了还没更新的值则会报错 :


a = 10

def sum ( n ) :

   n += a

   a = 11

   print ('a = ', a, end = ' , ' )

   print ( 'n = ', n )

  

sum(3)

输出 :


...

UnboundLocalError: local variable 'a' referenced before assignment

可以加上 global 引用以更新变量值 :


a = 10

def sum ( n ) :

   global a

   n += a

   a = 11

   print ('a = ', a, end = ' , ' )

   print ( 'n = ', n )


sum ( 3 )

print ( '外 a = ', a )

输出:


a = 11 , n = 13 外 a = 11


ls

   ls


  moo***huan@foxmail.com


5年前 (2017-12-28)

   FVortex


  hty***80402@qq.com


41

函数也可以以一个函数为其参数:


def hello () :

  print ("Hello, world!")


def execute(f):

  "执行一个没有参数的函数"

  f()


execute(hello)

输出:


Hello, world!

FVortex

   FVortex


  hty***80402@qq.com


5年前 (2018-02-16)

   Mr.Wu


  928***263@qq.com


58

可以通过 函数名.__doc__ 的方式来显示函数的说明文档,感觉这个如果在阅读比较大的程序时应该会有用,同时也在提示自己在写函数时注意添加文档说明。


def add(a,b):

    "这是 add 函数文档"

    return a+b


print (add.__doc__)

输出结果为:


这是 add 函数文档

更多内容可参考:Python 文档字符串(DocStrings)


Mr.Wu

   Mr.Wu


  928***263@qq.com


4年前 (2018-07-20)

   Mr.Wu


  928***263@qq.com


84

函数返回值的注意事项: 不同于 C 语言,Python 函数可以返回多个值,多个值以元组的方式返回:


def fun(a,b):    

    "返回多个值,结果以元组形式表示"

    return a,b,a+b

print(fun(1,2))

输出结果为:


(1, 2, 3)

Mr.Wu

   Mr.Wu


  928***263@qq.com


4年前 (2018-07-20)

   sprinkle


  117***1554@qq.com


36

函数的装饰器


在不改变当前函数的情况下, 给其增加新的功能:


def log(pr):#将被装饰函数传入

    def wrapper():

        print("**********")      

        return pr()#执行被装饰的函数

    return wrapper#将装饰完之后的函数返回(返回的是函数名)

@log

def pr():

    print("我是小小洋")


pr()

回调函数和返回函数的实例就是装饰器。


更多内容可参考:Python 函数装饰器


sprinkle

   sprinkle


  117***1554@qq.com


4年前 (2018-07-28)

   Null


  wuh***ing2012@163.com


   参考地址


25

1.内部函数,不修改全局变量可以访问全局变量


a = 10

def test():

    b = a + 2 #仅仅访问全局变量 a

    print(b)

test()

输出结果为:


12

2.内部函数,修改同名全局变量,则python会认为它是一个局部变量(同教程最后一个例子)


#!/usr/bin/python3

 

a = 10

def test():

    a = a + 1 #修改同名的全局变量,则认为是一个局部变量

    print(a)

test()

3.在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError


Null

   Null


  wuh***ing2012@163.com


   参考地址


4年前 (2018-09-06)

   richael


  ric***l0302@163.com


13

在这里补充一点关于 global 和 nonlocal 的知识:


nonlocal 只能修改外层函数的变量而不能修改外层函数所引用的全局变量,给一个例子如下:


x = 0

def outer():

    global x

    x = 1    

    def inner():

        nonlocal x

        x = 2        

        print(x)

    inner()


outer()

print(x)

结果会报错:


line 6

    nonlocal x

    ^

SyntaxError: no binding for nonlocal 'x' found

richael

   richael


  ric***l0302@163.com


4年前 (2018-12-06)

   爱睡觉的猫


  199***09662@163.com


43

global 关键字会跳过中间层直接将嵌套作用域内的局部变量变为全局变量:


测试代码如下:


num = 20


专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-内江上往建站


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站