相关疑难解决方法(0)

570
推荐指数
5
解决办法
24万
查看次数

我什么时候应该在Python中使用类?

我已经在python中编程了大约两年; 主要是数据(pandas,mpl,numpy),还有自动化脚本和小型Web应用程序.我正在努力成为一个更好的程序员并增加我的python知识,困扰我的一件事是我从未使用过类(除了为小型web应用程序复制随机烧瓶代码之外).我一般都明白它们是什么,但我似乎无法理解为什么我需要它们通过一个简单的功能.

为了增加我的问题的特异性:我写了大量的自动报告,这些报告总是涉及从多个数据源(mongo,sql,postgres,apis)中提取数据,执行大量或少量数据修改和格式化,将数据写入csv/excel/html,通过电子邮件发送出去.脚本范围从~250行到~600行.我是否有理由使用课程来完成这项工作?为什么?

python oop

124
推荐指数
4
解决办法
5万
查看次数

数据类与typing.NamedTuple主要用例

长话短说

PEP-557引入了数据类到Python标准库,基本上可以填补因为同样的作用collections.namedtupletyping.NamedTuple.现在我想知道如何分离使用namedtuple仍然是更好的解决方案的用例.

数据类优于NamedTuple

当然,dataclass如果我们需要,所有的功劳都归功于:

  • 可变对象
  • 继承支持
  • property 装饰器,可管理的属性
  • 生成的方法定义开箱即用或可自定义的方法定义

在同一个PEP中简要解释了数据类的优点:为什么不使用namedtuple.

问:在哪些情况下,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 pep namedtuple python-3.7 python-dataclasses

19
推荐指数
6
解决办法
3535
查看次数

Python函数可以只返回两个值中的第二个吗?

我有一个返回多个值的Python函数.作为此问题的示例,请考虑下面的函数,它返回两个值.

def function():
    ...
    return x, y
Run Code Online (Sandbox Code Playgroud)

我知道这个函数可以返回两个值x, y = function().但是这个函数有可能只返回第二个值吗?

例如,在MATLAB中,可以执行以下操作:~, y = function().我还没有在Python中找到一个等效的方法.

python matlab return function

13
推荐指数
2
解决办法
3405
查看次数

如何优雅地忽略Python函数的某些返回值?

有时函数会给出一个您只想丢弃的返回值,而不是发送到输出流.处理这个问题的优雅方法是什么?

请注意,我们正在讨论的函数会返回一些您无法更改的函数.

def fn():
    return 5
Run Code Online (Sandbox Code Playgroud)

我个人以前使用null过,但我正在寻找一种更加pythonic的方式:

null = fn()
Run Code Online (Sandbox Code Playgroud)

python return-value

10
推荐指数
2
解决办法
2万
查看次数

如何忽略Python中多输出函数的输出?

假设我有一个功能:

def f():
  ...
  ...
  ...
  return a,b,c
Run Code Online (Sandbox Code Playgroud)

我想在函数的输出中只得到b.我必须使用哪个作业?

谢谢.

python function output

9
推荐指数
1
解决办法
1万
查看次数

函数如何选择性地返回一个或多个值

忽略函数 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 return

8
推荐指数
1
解决办法
2万
查看次数

在python中获取没有完整路径的当前目录

如果这是一个已经解决的问题,我道歉.我想在运行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))?

谢谢!

python os.path

3
推荐指数
1
解决办法
3322
查看次数

如何在python中抑制函数输出

假设我有一个非常简单的功能:

def myFunction(arg1, arg2):
    return arg1, arg2
Run Code Online (Sandbox Code Playgroud)

现在,如果我只想访问第二个参数,可以执行以下操作:

none, arg2 = myFunction(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

python arguments function python-2.7

2
推荐指数
1
解决办法
1765
查看次数

如何仅使用函数的一个返回变量

这可能是一个愚蠢的问题,但我很难找到答案。

我正在使用 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 function

1
推荐指数
1
解决办法
3289
查看次数