如何查看变量的类型,无论是无符号32位,带符号16位等等?
我该如何看待它?
Python 2.6引入了该str.format()方法,其语法与现有%运算符略有不同.哪种情况更好,哪种情况更好?
以下使用每种方法并具有相同的结果,那么有什么区别?
#!/usr/bin/python
sub1 = "python string!"
sub2 = "an arg"
a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)
c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)
print a # "i am a python string!"
print b # "i am a python string!"
print c # "with an arg!"
print d # "with an arg!"
Run Code Online (Sandbox Code Playgroud)此外,何时在Python中发生字符串格式化?例如,如果我的日志记录级别设置为HIGH,我仍然会执行以下%操作吗?如果是这样,有没有办法避免这种情况?
log.debug("some debug info: %s" % some_info)
Run Code Online (Sandbox Code Playgroud)selfPython 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在Ruby中我可以这样做:
class myClass
def myFunc(name)
@name = name
end
end
Run Code Online (Sandbox Code Playgroud)
我很容易理解.但是在Python中我需要包括self:
class myClass:
def myFunc(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.
有方法isiterable吗?到目前为止我找到的唯一解决方案是打电话
hasattr(myObj, '__iter__')
Run Code Online (Sandbox Code Playgroud)
但我不确定这是多么万无一失.
如何使Python类可序列化?
一个简单的课程:
class FileItem:
def __init__(self, fname):
self.fname = fname
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能得到输出:
>>> import json
>>> my_file = FileItem('/foo/bar')
>>> json.dumps(my_file)
TypeError: Object of type 'FileItem' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
没有错误(__CODE__)
我需要在Python中创建一个列表列表,所以我输入以下内容:
myList = [[1] * 4] * 3
Run Code Online (Sandbox Code Playgroud)
列表看起来像这样:
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
然后我改变了最里面的一个值:
myList[0][0] = 5
Run Code Online (Sandbox Code Playgroud)
现在我的列表看起来像这样:
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
这不是我想要或期望的.有人可以解释一下发生了什么,以及如何解决这个问题?
我最近迁移到了Py 3.5.这段代码在Python 2.7中正常工作:
with open(fname, 'rb') as f:
lines = [x.strip() for x in f.readlines()]
for line in lines:
tmp = line.strip().lower()
if 'some-pattern' in tmp: continue
# ... code
Run Code Online (Sandbox Code Playgroud)
升级到3.5后,我得到了:
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)
最后一行的错误(模式搜索代码).
我已尝试.decode()在语句的任何一侧使用该函数,也尝试过:
if tmp.find('some-pattern') != -1: continue
Run Code Online (Sandbox Code Playgroud)
- 无济于事.
我能够迅速解决几乎所有2:3的问题,但这个小小的陈述让我烦恼.
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?我糊涂了.
你需要知道什么来回答我的问题?
现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.
我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init__并__new__导致想知道这种血腥__call__可以用于什么.
你能给我一些解释,包括魔术方法的例子吗?