stackoverflow上面关于python的高票回答

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

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

 

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

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看