来自Python书籍:
学习Python。第五版,第 #727 页
我读了以下内容:
如果Python在搜索路径上只找到一个字节码文件并且没有找到源代码,那么它只是直接加载字节码;这意味着您可以将程序仅作为字节代码文件发送,并避免发送源代码
但是当在 Python 3.5 上尝试相同的操作时,它不起作用:
~/Python/Module_Test$ cat a.py
a = "abc"
l = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
导入模块'a'创建的字节码文件如下:
~/Python/Module_Test/__pycache__$ ls
a.cpython-35.pyc
Run Code Online (Sandbox Code Playgroud)
现在我删除了该'a.py'文件并从字节码目录中导入了该模块'a':
~/Python/Module_Test/__pycache__$ python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'a'
Run Code Online (Sandbox Code Playgroud)
我什至尝试将字节码目录添加到搜索路径,但仍然无法加载模块:
>>> …Run Code Online (Sandbox Code Playgroud) 让我们举个例子:
def fun(**args):
print(str(args))
dic = {'name': 'Pulkit'}
fun(**dic)
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,我有以下输出:
{'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)
现在让我们将值作为字节传递:
dic_vb = {'name': b'Pulkit'}
fun(**dic_vb)
Run Code Online (Sandbox Code Playgroud)
这也很好,并具有以下输出:
{'name': b'Pulkit'}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将密钥作为字节时,事情会发生变化:
dic_kb = {b'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)
这导致TypeError说:
TypeError: fun() keywords must be strings
Run Code Online (Sandbox Code Playgroud)
有没有办法我们可以传递字节作为关键字参数.我还在repo检查了CPython代码,它处理关键字参数,似乎我们无法通过.是否有任何解决方法或我需要确保传递unicodes.
我正在处理一个代码库,我们在Python 2上有很多这样的实例,需要移植到Python 3.所以唯一可能的方法是将所有关键字参数转换为unicodes?
如何将a转换list为嵌套的`词典'?
例如:
l = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我想将它转换为如下所示的字典:
{1: {2: {3: {4: {}}}}}
Run Code Online (Sandbox Code Playgroud) 我想创建一个类层次结构,其中有一个Block可以自行实例化的类。然后我有一个List继承自Block并包含所有列表通用方法的类,最后我有继承自 的类OrderedList等。我希望人们能够实例化等,但不能。LableledListListOrderedListList
换句话说,您可以实例化一个普通对象Block,也可以实例化一个继承自 的OrderedList对象,但您不能实例化。ListBlockList
所有对 Google 的尝试都会导致抽象基类,但没有提供适合这种情况的示例,并且我无法推断。
我是Hadoop的新手,在一次MapReduce任务中我遇到以下错误:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
15/09/18 07:31:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
谢谢!
从我的理解,到目前为止,你可以很容易地创建一个迭代器用户定义的简单地下定义对象两者的__iter__方法和__next__它的方法.理解这一点非常直观.
我也知道你可以通过简单地调用该容器上的方法为任何内置容器手动构建迭代器iter().
基本上以任何容器为例,我不明白为什么他们没有__next__为自己定义方法.相反,当iter在容器(ergo,<container>.__iter__)上调用方法时,它返回一个类型的新对象<container_type>_iterator而不是容器本身.
最后,问题是,为什么容器对象将其iterator功能委托给单独的<type>_iterator对象而不是自己定义?
我有以下数据帧:
mean std
insert quality
0.0 good 0.009905 0.003662
0.1 good 0.450190 0.281895
poor 0.376818 0.306806
0.2 good 0.801856 0.243288
poor 0.643859 0.322378
0.3 good 0.833235 0.172025
poor 0.698972 0.263266
0.4 good 0.842288 0.141925
poor 0.706708 0.241269
0.5 good 0.853634 0.118604
poor 0.685716 0.208073
0.6 good 0.845496 0.118609
poor 0.675907 0.207755
0.7 good 0.826335 0.133820
poor 0.656934 0.222823
0.8 good 0.829707 0.130154
poor 0.627111 0.213046
0.9 good 0.816636 0.137371
poor 0.589331 0.232756
1.0 good 0.801211 0.147864
poor 0.554589 0.245867
Run Code Online (Sandbox Code Playgroud)
如果想要绘制2条曲线(点+误差),使用索引列作为X轴 …
我希望我的输出是:
Enter a number : n
List from zero to your number is : [0,1,2,3, ... , n]
0 + 1 + 2 + 3 + 4 + 5 ... + n = sum(list)
Run Code Online (Sandbox Code Playgroud)
但我的实际输出是:
Enter a number : 5
List from zero to your number is : [0, 1, 2, 3, 4, 5]
[+0+,+ +1+,+ +2+,+ +3+,+ +4+,+ +5+] = 15
Run Code Online (Sandbox Code Playgroud)
我正在使用join它,因为它是我所知道的唯一类型.
为什么在物品周围印有加号,为什么它们围绕着空白?
我应该如何将list字符串的值打印到字符串中供用户阅读?
谢谢.这是我的代码:
##Begin n_nx1 application
n_put = int(input("Choose a number : ")) …Run Code Online (Sandbox Code Playgroud) 前段时间,我需要retryR中的一个函数来处理缓慢的服务器响应.该函数将具有以下行为:(尝试操作(函数或方法),如果失败,请稍等一下,然后重试)x10
我想出了以下内容:
retry <- function(fun, max_trys = 10, init = 0){
suppressWarnings(tryCatch({
Sys.sleep(0.3);
if(init<max_trys) {fun}
}, error=function(e){retry(fun, max_trys, init = init+1)}))}
Run Code Online (Sandbox Code Playgroud)
它运作良好.现在我在Python3中需要相同的东西,所以我尝试制作相同的代码:
import time
def retry_fun(fun, max_trys = 10, init=0):
try:
time.sleep(0.3)
if(init<max_trys):
fun
except:
retry_fun(fun, max_trys, init = init+1)
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,它会崩溃我的内核.由于我是Python的初学者,我不确定是什么导致了崩溃,以及函数是否/如何作为参数传递到另一个函数.
你能救我吗?
内置常量,True并且至少在3.3中在Python 3中False是不可修改的:
bool类型的错误值.作业
False是非法的并且提出了SyntaxError.bool类型的真正价值.作业
True是非法的并且提出了SyntaxError.
但是,在python 2.7中,代码True = 0执行时没有任何异常.似乎这些限制很久以前应该被移植到2.x,但它们没有.
我能想到的唯一原因是与现有代码库的兼容性.您是否知道现有软件故意修改True或False?如果没有,还有什么其他原因?
python ×9
python-3.x ×8
list ×2
class ×1
constants ×1
containers ×1
dictionary ×1
function ×1
hadoop ×1
inheritance ×1
iterator ×1
java ×1
matplotlib ×1
pandas ×1
plot ×1
python-2.7 ×1
retry-logic ×1