python in linux
$ where is python # 找到Python可执行文件的位置
~/.conda/envs/python36/bin/python
# sublime 安装插件
选项卡:preferences ==> package-settings ==> package-control–user 位置:~/.config/sublime-text-3/Packages/User 文件package control.sublime-settings–user: 人工下载channel.json文件 “channels”:[ “/home/jktian/sublime3-channel/channel_v3.json” ],
anaconda
python36的位置:/home/jktian/.conda/envs/python36/bin/python
解决方法
eval(): 将字符串str当成有效的表达式来求值并返回计算结果。最终的结果是一个右值 globals(): 左值。返回的是当前模块的全局变量。若此模块中定义了类,则包含类 locals():s返回的是当前所在最小命名空间的局部变量的一个拷贝。如果在类的一个函数中,则是函数内的局部变量.只读 vars():返回对象object的属性和属性值的字典对象。如果默认不输入参数,就打印当前调用位置的属性和属性值,相当于locals()的功能。如果有参数输入,就只打印这个参数相应的属性和属性值 setattr()/getattr()
类和实例的命名空间
两者的__dict__不同 self.var表示的是实例的成员变量,只出现在实例.__dict__中 dir()命令查看模块的属性和成员变量 类的实例动态增加属性和方法
locals()['self'].setattr('but_cnt'+name[1],Button(frame.fra_cnt,text=name,font=font,fg=fg_color,bg=bg_color,width=width,command=funcname)
当python在使用变量时,会按照下面的步骤去搜索: 函数或类的局部变量。 全局变量。 内置变量。 setattr() getattr()
困境
globals()是全局的,可读可写,但是只有类的属性,即不是self的,修改了没用 locals()可以返回具体的对象的属性,但是是深赋值。 本质上是动态和静态。只能在动态运行时才能确定的,只能用setattr(),地址传递
函数的嵌套与返回
装饰器的原理:返回一个函数名
从windows迁移到linux
原本python程序tkinter在Linux上显示不友好,认为界面编程还是windows优于linux 结果,window7还要更新组件才能运行 果断返回Linux