在这段代码中,_after 的含义是什么for?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
Run Code Online (Sandbox Code Playgroud) 我已经在python中编程了大约两年; 主要是数据(pandas,mpl,numpy),还有自动化脚本和小型Web应用程序.我正在努力成为一个更好的程序员并增加我的python知识,困扰我的一件事是我从未使用过类(除了为小型web应用程序复制随机烧瓶代码之外).我一般都明白它们是什么,但我似乎无法理解为什么我需要它们通过一个简单的功能.
为了增加我的问题的特异性:我写了大量的自动报告,这些报告总是涉及从多个数据源(mongo,sql,postgres,apis)中提取数据,执行大量或少量数据修改和格式化,将数据写入csv/excel/html,通过电子邮件发送出去.脚本范围从~250行到~600行.我是否有理由使用课程来完成这项工作?为什么?
PEP-557引入了数据类到Python标准库,基本上可以填补因为同样的作用collections.namedtuple和typing.NamedTuple.现在我想知道如何分离使用namedtuple仍然是更好的解决方案的用例.
当然,dataclass如果我们需要,所有的功劳都归功于:
property 装饰器,可管理的属性在同一个PEP中简要解释了数据类的优点:为什么不使用namedtuple.
但是对于namedtuples这个相反的问题怎么样:为什么不使用dataclass呢?我想从性能的角度来看,名字元组可能更好,但尚未确认.
让我们考虑以下情况:
我们将页面维度存储在一个小容器中,该容器具有静态定义的字段,类型提示和命名访问.不需要进一步散列,比较等.
NamedTuple方法:
from typing import NamedTuple
PageDimensions = NamedTuple("PageDimensions", [('width', int), ('height', int)])
Run Code Online (Sandbox Code Playgroud)
DataClass方法:
from dataclasses import dataclass
@dataclass
class PageDimensions:
width: int
height: int
Run Code Online (Sandbox Code Playgroud)
哪种解决方案更可取,为什么?
PS这个问题不是以任何方式重复那个问题,因为我在这里询问的是哪个命名元组更好,而不是区别(我在询问之前检查了文档和来源)
我有一个返回多个值的Python函数.作为此问题的示例,请考虑下面的函数,它返回两个值.
def function():
...
return x, y
Run Code Online (Sandbox Code Playgroud)
我知道这个函数可以返回两个值x, y = function().但是这个函数有可能只返回第二个值吗?
例如,在MATLAB中,可以执行以下操作:~, y = function().我还没有在Python中找到一个等效的方法.
有时函数会给出一个您只想丢弃的返回值,而不是发送到输出流.处理这个问题的优雅方法是什么?
请注意,我们正在讨论的函数会返回一些您无法更改的函数.
def fn():
return 5
Run Code Online (Sandbox Code Playgroud)
我个人以前使用null过,但我正在寻找一种更加pythonic的方式:
null = fn()
Run Code Online (Sandbox Code Playgroud) 假设我有一个功能:
def f():
...
...
...
return a,b,c
Run Code Online (Sandbox Code Playgroud)
我想在函数的输出中只得到b.我必须使用哪个作业?
谢谢.
忽略函数 f() 的可选返回值的首选方法是什么?
A)
foo, _ = f()
Run Code Online (Sandbox Code Playgroud)
b)
foo = f()[0]
Run Code Online (Sandbox Code Playgroud)
C)
def f(return_bar=True):
if return_bar:
return foo, bar
else:
return foo
foo = f(return_bar=False)
Run Code Online (Sandbox Code Playgroud) 如果这是一个已经解决的问题,我道歉.我想在运行Python脚本时或在Python中获取当前目录.以下将返回包括当前目录的完整路径:
os.getcwd()
Run Code Online (Sandbox Code Playgroud)
我也可以一直到当前目录的路径:
os.path.dirname(os.getcwd())
Run Code Online (Sandbox Code Playgroud)
使用os.path.split将返回与上面相同的内容,加上当前文件夹,但最后我得到了一个我想要的对象:
(thing_I_dont_want, thing_I_want) = os.path.split(os.getcwd())
Run Code Online (Sandbox Code Playgroud)
有没有办法可以得到我想要的东西,当前文件夹,而不创建任何我不想要的对象?或者,有什么我可以代替变量thing_I_dont_want来阻止它被创建(例如(*, thing_I_want))?
谢谢!
假设我有一个非常简单的功能:
def myFunction(arg1, arg2):
return arg1, arg2
Run Code Online (Sandbox Code Playgroud)
现在,如果我只想访问第二个参数,可以执行以下操作:
none, arg2 = myFunction(arg1, arg2)
Run Code Online (Sandbox Code Playgroud) 这可能是一个愚蠢的问题,但我很难找到答案。
我正在使用 Flask/Python 并有一个名为“hero.py”的 .py 文件,其中包含一个 dict ex。
heroes = {'ironman': 'Strength, Covert', 'IronFist': 'Tech, Strenght'}
def hero():
hero, attribute = random.choice(list(heroes.items()))
if 'Tech' not in attribute:
hero, attribute = random.choice(list(heroes.items()))
if 'Tech' in attribute:
return(hero, attribute)
Run Code Online (Sandbox Code Playgroud)
attribute我想知道当我调用函数时如何只使用变量?
我可以做类似的事情:
my_hero = hero()
print(my_hero)
Run Code Online (Sandbox Code Playgroud)
但如何只打印出该英雄的属性呢?希望这是有道理的吗?
python ×10
function ×4
return ×2
arguments ×1
matlab ×1
namedtuple ×1
oop ×1
os.path ×1
output ×1
pep ×1
python-2.7 ×1
python-3.7 ×1
return-value ×1
variables ×1