stackoverflow怎么解决python_stackoverflow上面关于python的高票回答

本文汇总了Stackoverflow上关于Python编程的五个常见问题及其解答。问题涵盖检查文件是否存在、调用外部命令、按字典值排序、检测列表是否为空以及在函数中使用全局变量的方法。解答提供了简洁的代码示例,展示了Python编程中实用的技术和最佳实践。
摘要由CSDN通过智能技术生成

Stackoverflow是一个非常优秀的与程序相关的IT技术问答的英文网站。无论你处在什么状态,当你编程碰到问题的时候你总能找到你想要的答案。

本期翻译有五道题目,题目目录:

问题一:在Python中我怎样检测一个文件是否存在?

问题二:在Python中我怎样使用一个外部命令?

问题三:对一个字典按照值(values)进行排序

问题四:检测一个list为空的最佳方案?

问题五:如何在一个函数体内使用全局变量而不是创建。

问题一:How do I check whether a file exists using Python?

问题描述:Python中我怎样在不使用测试语句的情况下检测一个文件是否存在。

回答(获得2392赞同) :

你可以使用Python中的内建函数:os.path.isfile

Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.

import os.path

os.path.isfile(fname)

如果你要确认它确实是一个文件,而不是其它的什么东西。

在 Python 3.4中, pathlib module提供了一个面向对象的方法,看下面的实例代码:

from pathlib import Path

my_file = Path("/path/to/file")

if my_file.is_file():

# file exists

问题二:Calling an external command in Python

问题描述:我怎样在Python脚本中使用一个外部命令:就像Unix的shell或者Windows的命令提示符。

回答(获得2222赞同) :

我们来看一下标准库中的 subprocess module

from subprocess import call

call(["ls", "-l"])

subprocess模块与系统模块(system)比较,subprocess模块的的优势是更加灵活。我觉得os.system模块是过时的,我觉得他应该是这样的:replacing-older-functions-with-the-subprocess-module

但是,对于快速的一次性的脚本,使用os.system就足够了。

问题三:Sort a Python dictionary by value

问题描述:

我有一个字典(dictionary),这个字典的值是从某个数据库的两个字段读取的:一个字段是string类型,另一个一个字段是 numeric类型,这个string字段是唯一的,所以该字段作为字典的键(key)。

我现在可以按照键(keys)进行排序,但是我怎样才能按照值(values)排序呢?

回答(获得2300赞同) :

对一个字典(dict)进行排序是不可能的,你能得到的仅仅是经过排序的字典的表示。字典生来就是无序的,但是其他的数据类型比如:list(列表)、tuple(元组)是有序的,所以你需要一个能排序的表示:他可能是一个list或者是一个元组列表。

例如:

import operator

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

sorted_x = sorted(x.items(), key=operator.itemgetter(1))

sorted_x将是一个元组列表,这个列表是按照每个元组的第二个元素进行排序的。

dict(sorted_x) == x.

然后像上面这样,再把sorted_x转成一个字典,dict(sorted_x)就是你想要的结果。这样你就能完成按照字典的values进行排序了。

import operator

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

sorted_x = sorted(x.items(), key=operator.itemgetter(0))

问题四:Best way to check if a list is empty

问题描述:

举个例子,现在我有如下代码:

a = []

我怎样才能去判断这个列表a为空

回答(获得2418赞同) :

if not a:

print("List is empty")

使用空列表的隐式booleanness是相当Python化的。

问题五:Using global variables in a function other than the one that created them

问题描述:

如果我在一个函数体内创建了一个全局变量,我怎样才能在其他的函数内使用这个变量呢?我需要把这个全局变量存储在需要使用这个全局变量的函数的局部变量中吗?

回答(获得2429赞同) :

你可以通过在每一个你需要使用全局变量的函数体内用global关键词来描述这个变量从而可以在函数体内使用这个全局变量。

globvar = 0

def set_globvar_to_one():

global globvar # 改变修改globvar的值需要global申明

globvar = 1

def print_globvar():

print globvar # 读取globvar的值不需要global申明

set_globvar_to_one()

print_globvar() # 打印1

我的理解是:全局变量是非常危险的,Python希望你明白你在使用全局变量,因此在每次使用的时候,它都需要关键词:global

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值