V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  justou  ›  全部回复第 11 页 / 共 12 页
回复总数  239
1 ... 3  4  5  6  7  8  9  10  11  12  
2016-11-09 19:51:56 +08:00
回复了 Tianny 创建的主题 Python 请教大家关于 python 类属性和实例属性的问题,谢谢!
这儿跟可变对象和不可变对象没啥关系;
类属性被所有实例共享, 实例都是从某个类(相当于模板)造出来的; 实例属性可各不相同, 还可以动态添加删除

这里是 foo.x=1.7 这种赋值方式的问题, 这会给实例动态添加一个(实例)属性 x, 跟类属性 x 不同
比如 print foo.y 会抛出 AttributeError, 但 foo.y=1 会动态添加一个实例属性 y

修改类属性用类名访问 Foo.x=2, 所有实例读取 x 属性时都是一样的值.(前提是没有被实例属性覆盖)

class Cls(object):
x = 1

c1 = Cls()
c2 = Cls()
print c1.x # 1
print c2.x # 1

Cls.x = 2
print c1.x # 2
print c2.x # 2

c1.x = 233
print c1.x # 233, 先得到实例属性
print c2.x # 2
print Cls.x # 2
2016-11-02 16:55:30 +08:00
回复了 wisefree 创建的主题 Python matplotlib 如何解决中英混排
C:\Windows\Fonts 文件夹下右键看属性, 没有属性的是字体系列, 双击打开它看里面每个字体文件的属性, 里面有该字体的名字。
2016-11-02 12:45:21 +08:00
回复了 wisefree 创建的主题 Python matplotlib 如何解决中英混排
这样的?


# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

song_ti = FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc', size=20)
times_new_roman = FontProperties(fname=r'C:\Windows\Fonts\times.ttf', size=15)
ax = plt.gca()
ax.set_title(u'能量随时间的变化', fontproperties=song_ti)
ax.set_xlabel('Time (s)', fontproperties=times_new_roman)
ax.set_ylabel('Energy (J)', fontproperties=times_new_roman)
plt.show()
做一些会卡界面的操作放到单独线程更好, 比如在界面显示的同时要加载大量初始化数据,把加载数据的工作放在单独线程, 不阻塞界面的显示, 但是最好给出一个模态窗口提示数据正在加载,让用户稍等;
或者在主界面显示之前用闪屏提示数据正在加载,有 photoshop 的话打开看看它的界面显示过程
2016-10-05 21:35:53 +08:00
回复了 vtoexsir 创建的主题 Python python 中怎么判断编码的兼容性?
没有任何有效算法来判断字符串的编码。可以使用统计的方法估计编码,比如 chardet ,既然是统计,那对小样本几乎是无效的。同理,要判断两个较短的字符串是否为相同编码不大可能。如果有有效方法请纠正我。
2016-09-27 00:15:54 +08:00
回复了 Satan4869 创建的主题 Python 本来想学 Python 的,无奈不得已放弃
用 python+pyqt 写过不少小工具, 都是图形界面(几乎都有用 qt designer 画控件), 都是用 pyinstaller 打包成 exe 的. 简单一个命令自动打包, 如果想要打的包精简干净去除一些不需要的东西, 需要仔细去研究 pyinstaller 的文档 https://pyinstaller.readthedocs.io/en/stable/,

我是用了几年 python 后才开始需要打包 exe 的, 写的工具要放到很多没有 python 环境的机器上运行. 入门没必要纠结怎么打包(也没必要), 可能连 pyinstaller 文档都读不下去, 就是 lz 所说的: 经验问题.
2016-08-10 21:41:08 +08:00
回复了 justou 创建的主题 Python 请教一个用程序打开 windows 资源管理器的问题
唉, 没想起在那儿搜, 前不久才注册了账号(´+ω+`)
2016-08-10 21:26:24 +08:00
回复了 justou 创建的主题 Python 请教一个用程序打开 windows 资源管理器的问题
@Kisesy 非常感谢! 的确可行! 刚好满足需求!
可否贴一下原始地址, 唉... 对 windll 里面东西太陌生了
2016-08-10 21:12:52 +08:00
回复了 justou 创建的主题 Python 请教一个用程序打开 windows 资源管理器的问题
还想到的办法是执行 explorer /select 后获得它的进程号, 再打开同一个文件的窗口时如果有旧的进程存在就先将那个进程杀死(用 psutil)后再打开新窗口, 这样的话每个文件就需要绑定一个进程号, 不想去改那些代码了, 已经把 show_in_explorer(filename)独立出来了, 只需要给它个文件名就可以, 不想它跟其它代码发生关系
2016-08-10 21:00:26 +08:00
回复了 justou 创建的主题 Python 请教一个用程序打开 windows 资源管理器的问题
@Kisesy 我也只找到这个, 感觉效果跟 explorer /select 是一样的, 翻了很久文档跟查找相关头文件就是找怎么用 ctypes 构造它的参数, 这方面资料太少了, 只好先用 explorer /select 先将就了下了
2016-08-10 18:53:15 +08:00
回复了 justou 创建的主题 Python 请教一个用程序打开 windows 资源管理器的问题
@Kisesy 我试了下, 关闭窗口后 explorer 的应用进程消失, 然后转为后台进程, 但是一会儿过后这些后台进程会自动结束,
我的是 win10 1511. 所以我才寻找可以只打开一个窗口方法, 翻了很久 windows api, 至今没解决
@smileawei 好的, 是这样的 :)
连按几下←浏览器提示 Alt+←可以后退, 但是按 Alt+←也根本没反应!
52.0.2743.116 m (64-bit)
鼠标侧键后退也习惯了
2016-08-08 19:41:10 +08:00
回复了 SlipStupig 创建的主题 Python 想请教一下 python 装饰器的作用
我在实际当中使用过的一个情形:
有一大批函数都需要做相同或相似的参数检查, 每个函数里面都检查会造成大量重复代码, 那么就把检查部分提出来放到一个检查函数, 而这个检查函数返回的是经过参数检查的一系列函数, 也就是函数返回函数, python 里自然就是装饰器了, 只需要在那一系列函数上方套一个 @check_func, 调用这一系列函数就自动完成参数检查了: 避免了重复代码, 避免了到处都要手动调用一个检查函数
2016-08-08 19:30:00 +08:00
回复了 SlipStupig 创建的主题 Python 想请教一下 python 装饰器的作用
装饰器模式的好处
2016-08-02 14:50:57 +08:00
回复了 xinali 创建的主题 Python python 中 str 和 unicode 存储所占字节数目问题
另外, 也可以这样来测试
In [1]: ''.__sizeof__()
Out[1]: 21

In [2]: '1'.__sizeof__()
Out[2]: 22

In [3]: '123'.__sizeof__()
Out[3]: 24

In [4]: u''.__sizeof__()
Out[4]: 26

In [5]: u'1'.__sizeof__()
Out[5]: 28

创建一个空对象来看这个对象对应结构体的大小, 然后慢慢加字符进去看大小之差
2016-08-02 14:42:05 +08:00
回复了 xinali 创建的主题 Python python 中 str 和 unicode 存储所占字节数目问题
sizeof 计算的是那个对象占用的空间(跟 C 语言的 sizeof 类似), 而 str, unicode 在底层都是一个 C 结构体表示的, 所以这样算出来的字节数是整个结构体的字节数(包括里面字符指针的内存大小)

如果要获得里面字符字节数, 需要直接访问里面的 buffer 信息
from array import array

s1 = '\xe4\xb9\xa0\xe6\x83\xaf'
s2 = u'\xe4\xb9\xa0\xe6\x83\xaf'

arr = array('c', s1)
print arr.buffer_info()[1] * arr.itemsize

uarr = array('u', s2)
print uarr.buffer_info()[1] * uarr.itemsize
2016-08-01 11:13:24 +08:00
回复了 SlipStupig 创建的主题 Python 最近研究 python 的一个小失落
除了掌握一些 pythonic 的编程技巧提升程序的效率外, 大幅提升 python 执行效率的办法多的是啊,
感觉比较灵活的还是在 cython 中 C/C++, python 混编, 灵活跟效率自己平衡
可以把各种单位的英文全称写出来, 意义就很明显了
比如, Mbps = megabits per second, MBps = megabytes per second, Mpps = million packets per second
2016-07-17 17:01:36 +08:00
回复了 MyFaith 创建的主题 Python 有没有易懂的 Python 多线程爬虫代码?
windows 下 IO 密集型任务(不单只网络 IO)优先考虑线程, 用进程太浪费, 每个进程都是一个单独的解释器(1000 个线程跟 1000 个进程区别应该还是较大的, 内存方面)

用队列传输消息, 设计好程序结构, Process 跟 Thread 的切换也就改改几个 import, 具体问题 profile 看下, 谁的效率高(内存使用, 执行时间)就用谁

协程是在一个线程中切换的, 协程切换比线程切换更流畅, 花销也更小, 这是听来的, 没在实际中用过(错了请纠正我), 习惯了队列传输模式, 也方便线程改进程

Unix 下不清楚, 不乱说
1 ... 3  4  5  6  7  8  9  10  11  12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2216 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 01:12 · PVG 09:12 · LAX 17:12 · JFK 20:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.