python——作用域 == is

来源:互联网 发布:程序员面试笔试宝典 编辑:程序博客网 时间:2024/05/22 12:25

test.py   

num    =    200 def   print_num():

print("----print_num    func,    num=%d----"%num)

main.py   

from    test    import    * num    =   100

def    print_num2():                print("----print_num2    func,    num=%d----"%num)

print_num()#test命名空间中的print_num函数,它会使test命名空间中的全局变量

print_num2()#⽤当前命名空间print_num2函数,它会使⽤当前命名空间中的全局

python3    main.py   结果如下:

----print_num    func,   num=200----

----print_num2    func,   num=100----

globalslocals

globals函数能够查询全局变量,返回一个字典数据。

locals函数能够查询局部变量,返回一个字典数据。

 

 

 

 

==is

>>>    a    =    1000

>>>    b    =    1000

>>>    a    ==    b True

>>>    a    is    b

False

 

总结:is两个引⽤是否指向了同⼀个象(引⽤⽐)。

              ==   两个象的是否相等。

 

 

 

 

 

 

 

 

对象值较(==)的定义

class   Person(object):               

 def   __init__(self,    name):

self.name    =   name

 

p1    =    Person("王胖胖")

p2    =    Person("王胖胖")

print("p1    ==    p2:    %s"    %    (p1    ==    p2))       #    False print("p1    is    p2:    %s"    %    (p1   is    p2))        #    False

#   定义__eq__⽅法,重新实现==⽅法

class    NewPerson(object):               

 def    __init__(self,    name):                                

self.name    =    name

def   __eq__(self,    person_obj):          """==时调⽤的⽅法"""

return    self.name    ==    person_obj.name

np1    =    NewPerson("王胖胖") np2    =    NewPerson("王胖胖")

print("np1    ==    np2:    %s"    %    (np1    ==    np2))       #    True print("np1    is    np2:    %s"    %    (np1   is    np2))        #    False

原创粉丝点击