作⽤域
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----
作⽤域
globals、locals
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 |