我阅读了 telethon 文档来检索用户名并加入频道。经过一番尝试我写了这段代码:
result = client.invoke(ResolveUsernameRequest('XXXX'))
channel = InputChannel(result.peer.channel_id, result.chats[0].access_hash)
client.invoke(JoinChannelRequest(channel))
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但我想知道是否有更好或更简单的方法?
假设我有一个这样的列表:
my_list = [0,1,2,3,4,5] # range(5)
Run Code Online (Sandbox Code Playgroud)
我想打印这个:
[2,1,0]
Run Code Online (Sandbox Code Playgroud)
我的python脚本是:
print(my_list[2:-1:-1])
Run Code Online (Sandbox Code Playgroud)
但它会打印一个空列表!
这是python中的一个错误(2和3!)?
我不会使用任何技巧,如:
num_of_elems_i_want = 3
print(my_list[::-1][len(my_list) - num_of_elems_i_want:])
Run Code Online (Sandbox Code Playgroud)
或第三方模块..
我想使用传递给format方法的变量计算f-string中的数学运算.例如,我需要这样的东西:
print(f"{{a}} * 3".format(a=2))
Run Code Online (Sandbox Code Playgroud)
此代码打印:
2 * 3
Run Code Online (Sandbox Code Playgroud)
但我想要的结果是6.另外我不会使用python eval函数来评估这个字符串.
我x用值声明了一个整数变量0.
>>> x = 0
Run Code Online (Sandbox Code Playgroud)
当我运行这一行:
>>> x += 3
>>> x
3
Run Code Online (Sandbox Code Playgroud)
一切顺利.但是当我运行这一行时:
>>> x.__iadd__(3)
Run Code Online (Sandbox Code Playgroud)
Python提出了一个例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__iadd__'
Run Code Online (Sandbox Code Playgroud)
为什么python会抛出这个异常,而在官方的python文档中,operator模块表示+=运算符调用__iadd__方法?