在C++中,我喜欢分解我的代码行,如果它们太长,或者if if语句,如果它有很多检查.
if (x == 10 && y < 20 && name == "hi" && obj1 != null)
// Do things
// vs
if (x == 10
&& y < 20
&& name == "hi"
&& obj1 != null)
{
// Do things
}
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, mAppliedEffects[inEffectIDHash], inTagNameHash);
// vs
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems,
mAppliedEffects[inEffectIDHash], inTagNameHash);
Run Code Online (Sandbox Code Playgroud)
在Python中,代码块由选项卡定义,而不是由";"定义.在行尾
if number > 5 and number < 15:
print "1"
Run Code Online (Sandbox Code Playgroud)
python中是否可以使用多行?喜欢...
if number > 5
and number < 15:
print "1"
Run Code Online (Sandbox Code Playgroud)
我不认为这是可能的,但它会很酷!
我想要一个多行if语句,例如:
if CONDITION1 or\
CONDITION2 or\
CONDITION3:
Run Code Online (Sandbox Code Playgroud)
我想评论每行源代码的结尾
if CONDITION1 or\ #condition1 is really cool
CONDITION2 or\ #be careful of condition2!
CONDITION3: #see document A sec. B for info
Run Code Online (Sandbox Code Playgroud)
我被禁止这样做,因为python将它全部视为一行代码和报告SyntaxError: unexpected character after line continuation character.
我应该如何实施和记录冗长的多行if语句?
我有很长的功能,如下所示:
hash_correct = hashlib.md5(salt + password)).digest().encode("base64")
Run Code Online (Sandbox Code Playgroud)
我想将它分成两行,但我不确定在Python中执行此操作的正确方法?
谢谢.
假设我有一个多行命令:
if 2>1 \
and 3>2:
print True
Run Code Online (Sandbox Code Playgroud)
在一个if块中,我可以通过使用括号来包装行来在其中一个条件旁边添加注释:
if (2>1 #my comment
and 3>2):
print True
Run Code Online (Sandbox Code Playgroud)
事实上,它与PEP 8指南的推荐方式一致:
包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续.通过将表达式包装在括号中,可以在多行中分割长行.这些应该优先使用反斜杠来继续行.
但是,有时您需要使用continuation.例如,long,多个with语句不能使用隐式延续.那么,如何在特定行旁边添加注释?这不起作用:
with open('a') as f1, #my comment\
open('b') as f2:
print True
Run Code Online (Sandbox Code Playgroud)
更一般地说,是否有一种在特定延续线旁边添加注释的通用方法?
我正在编写一个Python解析器来学习Flex和Bison,我试图找出为什么只有这些程序中的第一个是有效的Python.
a.py:
\
# This is valid Python
Run Code Online (Sandbox Code Playgroud)
没有产生错误.
b.py:
\
# This is not valid Python
Run Code Online (Sandbox Code Playgroud)
产生此错误:
File "b.py", line 1
\
^
IndentationError: unexpected indent
Run Code Online (Sandbox Code Playgroud)
并且c.py:
if True:
pass
\
# This is not valid Python
Run Code Online (Sandbox Code Playgroud)
产生此错误:
File "c.py", line 4
# This is not valid Python
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我在linux2(Ubuntu 10.04)上使用Python 2.6.5(r265:79063,2010年4月16日,13:09:56)[GCC 4.4.3]; 但是,在ideone.com上进行测试表明Python 3上的行为是相同的.
我的数据框中有一个列,其值为'3.456B',实际上代表了3.456亿(和Million相似的表示法).如何将此字符串形式转换为正确的数字表示?
这显示了数据框:
import pandas as pd
data_csv = pd.read_csv('https://biz.yahoo.com/p/csv/422conameu.csv')
data_csv
Run Code Online (Sandbox Code Playgroud)
这是一个示例值:
data_csv['Market Cap'][0]
type(data_csv['Market Cap'][0])
Run Code Online (Sandbox Code Playgroud)
我试过这个:
data_csv.loc[data_csv['Market Cap'].str.contains('B'), 'Market Cap'] = data_csv['Market Cap'].str.replace('B', '').astype(float).fillna(0.0)
data_csv
Run Code Online (Sandbox Code Playgroud)
但不幸的是,最后还有值为'M'的值,表示百万.它返回错误如下:
ValueError: invalid literal for float(): 6.46M
Run Code Online (Sandbox Code Playgroud)
如何在此列中用适当的值替换B和M?有没有更好的方法呢?
我有一个很长的正则表达式,我想继续到下一行,但我尝试的一切给了我一个EOL或打破正则表达式.我已经在括号内继续了一行,并阅读了这一点,除此之外,我如何在Python中进行换行(换行)?
工作,但仍然太长:
REGEX = re.compile(
r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')
Run Code Online (Sandbox Code Playgroud)
错误:
REGEX = re.compile(
r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+
)\s+([a-zA-Z\d-]+)')
SyntaxError: EOL while scanning string literal
REGEX = re.compile(
r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\
)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')
sre_constants.error: unbalanced parenthesis
REGEX = re.compile(
r'\d\s+\d+\s+([A-Z0-9-]+)\s+( \
[0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')
regex no longer works
REGEX = (re.compile(
r'\d\s+\d+\s+([A-Z0-9-]+)\s+(
[0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)'))
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)
我已经能够缩短我的正则表达式,所以这不再是一个问题,但我现在有兴趣知道如何使用长正则表达式进行行继续?
我有这行代码:
assert 0 <= j <= self.n, "First edge needs to be between 0 and {}".format(self.n)
Run Code Online (Sandbox Code Playgroud)
我希望pep8很开心,但我不明白如何打破这条线.我试着用逗号破解并得到无效的语法.我已经尝试用额外的"" 来打破字符串,如如何打破PEP8合规性的长串线?.PEP8很高兴,但断言只产生了消息的前半部分.
打破长断言字符串的正确方法是什么?
我使用ninja-ide,我发现它可以抱怨所有事情的惊人方式(到处都是黄色的底线)因为我觉得它是一种改进我的编码以使其更加标准的方法.
然而,因为它也抱怨代码行的长度(这当然很有意义,因为没有人喜欢水平滚动来阅读代码),我一直坚持这个问题.
让我们说这句话:
v1, v2 = np.sum(((b1 - m1) ** 2) * p1) / q1, np.sum(((b2 - m2) ** 2) * p2) / q2
Run Code Online (Sandbox Code Playgroud)
它有81个字符,包括空格,在这种情况下,我可以像这样拆分它:
v1 = np.sum(((b1 - m1) ** 2) * p1) / q1
v2 = np.sum(((b2 - m2) ** 2) * p2) / q2
Run Code Online (Sandbox Code Playgroud)
但这并没有太多的pythonic,还有另一个问题:
如果没有逗号怎么办?我的意思是我怎么能分开这样的东西:
v2 = np.sum(((b1 - m1) ** 2 * np.sum(((b2 - np.sum(((b2 - m2) ** 2) * p2) / q2) ** 2) * p2) / q2) * p1)
Run Code Online (Sandbox Code Playgroud)
上面的内容在数学上没有任何意义,只是为了解释我的意思.
我有一个很长的表达,它不适合我的屏幕,我想写几行。
new_matrix[row][element] = old_matrix[top_i][top_j]+old_matrix[index_i][element]+old_matrix[row][index_j]+old_matrix[row][index_j]
Run Code Online (Sandbox Code Playgroud)
如果我只是换行,Python 会给我“缩进”错误。有没有办法在屏幕上“适应”长表达?
python ×10
multiline ×2
comments ×1
conditional ×1
continuation ×1
newline ×1
pandas ×1
python-3.x ×1
regex ×1
replace ×1
syntax ×1