今天,在一次采访中,首席技术官问我看起来像一个简单的问题,
这句话的回报是什么?:
None is None is None
Run Code Online (Sandbox Code Playgroud)
我认为Python执行了第一个操作None is None并将返回True.之后,它将比较True is None哪些将返回False.但令我惊讶的是,正确的答案是True.我试图找到这个问题的答案,但经过几天的搜索我没有发现任何东西.有人可以解释为什么会这样吗?
假设我lists以两种方式创建python .
在第一种情况下,我使用简单的赋值:
my_list = []
print(my_list, '->', my_list.__sizeof__())
my_list = [1]
print(my_list, '->', my_list.__sizeof__())
my_list = [1, 1]
print(my_list, '->', my_list.__sizeof__())
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我使用append()列表上的方法:
my_list = []
print(my_list, '->', my_list.__sizeof__())
my_list.append(1)
print(my_list, '->', my_list.__sizeof__())
my_list.append(1)
print(my_list, '->', my_list.__sizeof__())
Run Code Online (Sandbox Code Playgroud)
但我得到了意想不到的(对我来说)输出:
=== WITH ASSIGNMENT ===
([], '->', 40)
([1], '->', 48)
([1, 1], '->', 56)
=== WITH APPEND ===
([], '->', 40)
([1], '->', 72)
([1, 1], '->', 72)
Run Code Online (Sandbox Code Playgroud)
Python内存管理内部会发生什么?为什么"相同"列表的大小不同?
我有 FastAPI 教程中的简单 Config 类。但它似乎使用旧的 pydantic 版本。我使用 pydantic v2 版本运行我的代码并收到几个错误。我几乎修复了所有这些,但最后一个我还无法修复。这是不起作用的代码的一部分:
from pydantic import AnyHttpUrl, HttpUrl, PostgresDsn, field_validator
from pydantic_settings import BaseSettings
from pydantic_core.core_schema import FieldValidationInfo
load_dotenv()
class Settings(BaseSettings):
...
POSTGRES_SERVER: str = 'localhost:5432'
POSTGRES_USER: str = os.getenv('POSTGRES_USER')
POSTGRES_PASSWORD: str = os.getenv('POSTGRES_PASSWORD')
POSTGRES_DB: str = os.getenv('POSTGRES_DB')
SQLALCHEMY_DATABASE_URI: Optional[PostgresDsn] = None
@field_validator("SQLALCHEMY_DATABASE_URI", mode='before')
@classmethod
def assemble_db_connection(cls, v: Optional[str], info: FieldValidationInfo) -> Any:
if isinstance(v, str):
return v
postgres_dsn = PostgresDsn.build(
scheme="postgresql",
username=info.data.get("POSTGRES_USER"),
password=info.data.get("POSTGRES_PASSWORD"),
host=info.data.get("POSTGRES_SERVER"),
path=f"{info.data.get('POSTGRES_DB') or ''}",
)
return str(postgres_dsn)
Run Code Online (Sandbox Code Playgroud)
这就是我得到的错误:
sqlalchemy.exc.ArgumentError: …Run Code Online (Sandbox Code Playgroud) 我有两个列表可以是listor None。我想获得第三个列表,其中包含这两个列表的唯一联合结果。
first列表为None并且second为None -result将为Nonefirst是None且second不是None -result将是secondsecond是None且first不是None -result将是firstsecond不是None且first不是None -result将是first + second我用 if 条件做这个简单的事情:
result = first if first else second
if result is not None:
try:
result = list(set(first + second))
except TypeError:
pass
Run Code Online (Sandbox Code Playgroud)
我想以更好的方式做到这一点。也许您知道通过使用一个或多个字符串 …
我最近注意到,我使用迭代遍历DataFrame行的函数.iloc非常慢.我发现有一个更快的方法被调用.iat,据说相当于.iloc.我尝试了它,它将运行时间减少了大约75%.
但我有点犹豫:为什么有一个"等效"的方法更快?这两者的内部运作之间必然存在一些差异,这是它们存在的原因,而不仅仅是速度更快的原因.我试过到处寻找,但即使是熊猫文档也只是说明了这一点
DataFrame.iat
快速整数位置标量访问器.与iloc类似,iat提供基于整数的查找.您也可以使用这些索引器进行设置.
这没有用.
使用有限制.iat吗?为什么更快; 它更邋?? 或者我只是切换到使用.iat并愉快地忘记.iloc曾经存在过?
我正在尝试将 Django 应用程序部署到 Heroku,它开始构建、下载并安装所有内容,但这就是我在收集静态文件时得到的结果
remote: -----> $ python manage.py collectstatic --noinput
remote: Traceback (most recent call last):
remote: File "manage.py", line 22, in <module>
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
remote: utility.execute()
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 355, in execute
remote: self.fetch_command(subcommand).run_from_argv(self.argv)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
remote: self.execute(*args, **cmd_options)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
remote: output = self.handle(*args, **options)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle
remote: collected = self.collect()
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", …Run Code Online (Sandbox Code Playgroud) 我有一个简单的Dockerfile:
FROM php:7.1-apache
LABEL maintainer="rburton@agsource.com"
COPY C:/Users/rburton/code/MyAgsourceAPI /var/www
Run Code Online (Sandbox Code Playgroud)
这是给我麻烦的最后一行。我正在从Windows结构复制到docker容器(我假设是Linux)。构建此图像时,我得到:
...
Step 3/3 : COPY C:/Users/rburton/code/MyAgsourceAPI /var/www
COPY failed: stat /var/lib/docker/tmp/dockerbuilder720374851/C:/Users/rburton/code/MyAgsourceAPI: no such file or directory
Run Code Online (Sandbox Code Playgroud)
首先,有些事情阻止了人们认识到这是一个绝对路径,并且自然地,如果该路径前面加上/var/lib/docker/tmp/dockerbuilder720374851了前缀,则将找不到该文件。其次,我已经尝试过了/,\但是所有结果都相同。另外我怀疑的驱动器号使docker感到困惑。因此,问题是如何将文件和文件夹(以及内容)从Windows文件夹复制到Docker容器?
我尝试使用两种排序算法对我的列表进行排序:冒泡和快速。
为此我使用的algorithms模块bubble_sort,quick_sort分别。据我所知,第一个算法的复杂度是n^2,第二个是n*log(n)。但是我从这段代码中得到了意外的输出:
from algorithms.sorting import bubble_sort, quick_sort
import time
my_list = [1, 12, 33, 14, 52, 16, 71, 18, 94]
start1 = time.time()
for i in range(1000000):
bubble_sort.sort(my_list)
end1 = time.time()
start2 = time.time()
for i in range(1000000):
quick_sort.sort(my_list)
end2 = time.time()
print('Bubble sort:', end1 - start1)
print('Quick sort:',end2 - start2)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> Bubble sort: 7.04760217666626
>>> Quick sort: 8.181402921676636
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下冒泡排序比快速排序快?
我有使用SqlAlchemy ORM的简单查询:
query = DBsession.query(AssetsItem).filter_by(
AssetsItem.id > 10,
AssetsItem.country = 'England'
)
Run Code Online (Sandbox Code Playgroud)
我如何获得查询结果的长度。我想知道通过此查询可以获得多少AssetsItem
在金字塔中:
class ProjectorViews(Layouts):
def __init__(self, request):
self.request = request
@view_config(renderer="json", name="updates.json", request_method="POST")
def updates_view(self):
print self.request.params
Run Code Online (Sandbox Code Playgroud)
JS:
$(function() {
function get_updates () {
data = JSON.stringify({'a':1});
$.post('/updates.json', data, function(res) {
});
}, 'json').done(function() {
});
}
get_updates();
});
Run Code Online (Sandbox Code Playgroud)
控制台显示self.request.params退货NestedMultiDict([('{"a":1}', u'')])
如何获取NestedMultiDict对象中的键和值?
如果我这样做self.request.params.getall("a"),它报告
KeyError: "Key not found: 'a'"
Run Code Online (Sandbox Code Playgroud)
如果我这样做self.request.json_body,它会报告
ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud) python ×8
python-2.7 ×3
python-3.x ×3
algorithm ×2
list ×2
sqlalchemy ×2
dataframe ×1
django ×1
docker ×1
dockerfile ×1
fastapi ×1
pandas ×1
pydantic ×1
pyramid ×1
request ×1