stackoverflow上面关于python的高票回答

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

本期翻译有五道题目,题目目录:
问题一:在Python中我怎样检测一个文件是否存在?
问题二:在Python中我怎样使用一个外部命令?
问题三:对一个字典按照值(values)进行排序
问题四:检测一个list为空的最佳方案?
问题五:如何在一个函数体内使用全局变量而不是建立。

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

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

回答(得到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 modulespa

from subprocess import call
call(["ls", "-l"])

subprocess模块与系统模块(system)比较,subprocess模块的的优点是更加灵活。我以为os.system模块是过期的,我以为他应该是这样的:replacing-older-functions-with-the-subprocess-module翻译

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

问题三: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

 

参考:stackoverflow上面关于python的高票回答

相关文章
相关标签/搜索