首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python最佳实践:是否将全局已知变量显式传递给函数?

Python最佳实践:是否将全局已知变量显式传递给函数?
EN

Stack Overflow用户
提问于 2020-09-13 18:35:47
回答 1查看 129关注 0票数 3

我有一个关于Python最佳实践的一般性问题。我试着在谷歌上搜索答案,但没有找到任何相关的东西。问题是:显式地将全局已知参数传递给函数是最佳实践吗?

那么,这是最佳实践吗?

代码语言:javascript
运行
复制
a = 1

def add_one(a):
 b = a + 1

或者这个?

代码语言:javascript
运行
复制
a = 1

def add_one():
 b = a + 1
EN

回答 1

Stack Overflow用户

发布于 2020-09-14 03:22:24

下面是我关于将a设置为类属性,而不是使用global的评论。

简短的回答是:

在(适用)opportunity

  • class

时,传递变量是可以的

类示例:

这是一个简单的、精简的类结构,没有任何装饰。您将注意到没有任何全局变量,也没有传递任何变量。

这是而不是,意思是传递的变量是不被鼓励的,如果没有必要,它们是有用的。然而,这个,以表明不需要全局变量,并且通常有更好的方法。不管它值多少钱...(就我个人而言,我从未见过它们在Python中的用处)。

代码语言:javascript
运行
复制
class Demo():
    """Class attribute demonstration class."""
    
    def __init__(self):
        """Demo class initialiser."""
        self._a = 73
        
    def add_one(self):
        """Add one to the `a` attribute."""
        self._a += 1
        
    def times_two(self):
        """Multiply the `a` attribute by two."""
        self._a *= 2

使用案例:

我将首先指出,这个示例在现实世界中几乎是无用的,因为1)外部访问“私有”类属性和2)不断更新_a;这只是一个特定于您的问题的示例。

请注意,对不同函数的每次调用都会对_a产生不同但持续的影响;请注意,变量(类属性)既不是全局的,也不是传递的。

代码语言:javascript
运行
复制
demo = Demo()
print(f'Value of _a: {demo._a}')
>>> Value of _a: 73

demo.add_one()
print(f'Value of _a plus one: {demo._a}')
>>> Value of _a plus one: 74    

demo.times_two()
print(f'Value of _a plus one, times two: {demo._a}')
>>> Value of _a plus one, times two: 148
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63869749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档