a.py
#!c:/Python27/python.exe -u
from connection import Connection
import globals
globals.server_ip = '192.168.0.1'
connection = Connection()
Run Code Online (Sandbox Code Playgroud)
globals.py
#!c:/Python27/python.exe -u
server_ip = '127.0.0.1'
Run Code Online (Sandbox Code Playgroud)
connection.py
import globals
class Connection:
def __init__(self, server_ip = globals.server_ip):
print 'Connection is ' + server_ip + '\n'
Run Code Online (Sandbox Code Playgroud)
我原以为我会Connection is 192.168.0.1被打印出来.但是,相反,Connection is 127.0.0.1正在印刷.
除非我尝试通过显式传递参数来构造连接(这不是我想要的,因为我不愿意在连接0参数上进行更改)
connection = Connection(globals.server_ip)
为什么会这样?我还能申请其他技术吗?
Thi*_*ter 11
def __init__(self, server_ip=globals.server_ip):
Run Code Online (Sandbox Code Playgroud)
创建方法时绑定参数,以后不再重新计算.要使用当前值,请使用以下内容:
def __init__(self, server_ip=None):
if server_ip is None:
server_ip = globals.server_ip
Run Code Online (Sandbox Code Playgroud)
顺便说一下,出于完全相同的原因,这样的功能可能无法正常工作:
def foobar(foo=[]):
foo.append('bar')
return foo
Run Code Online (Sandbox Code Playgroud)
在性能关键代码中,此行为也可用于避免内置函数的全局查找:
def highspeed(some_builtin=some_builtin):
# in here the lookup of some_builtin will be faster as it's in the locals
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4057 次 |
| 最近记录: |