Python:在函数名称中使用空格?

问题描述 投票:0回答:6

我正在编写一个Python脚本来调用函数。

通常调用的函数是:

def myCall():
    print "Hello World"

但我想将该函数命名/使用为:

def my Call():
    print "I did it!"

我知道世界会开始思考为什么程序员会这样命名函数。只需将“空格”替换为“下划线”或其他内容即可!嗯...但这不是我希望脚本工作的方式。

有什么建议用“空格”来调用函数吗?

--------------------------------------------------------附加-- --------------------------------------

好吧伙计们!我将解释我的脚本是如何工作的。具体来说为什么我在函数名称中使用空格。此页面中有很多好奇心,因此我放置此附加组件来解释我这样做的原因。

我希望这能帮助大家理解我为什么这样做:)

带着尊重欢呼!

例如

===============
Welcome Menu
===============
1. Option 1
2. Option 2
3. Option 3
4. Option 4

我有一个用户主菜单,主菜单会不断更新每个菜单以在显示上面的选项之前进行检查

array = ["Option 1", "Option 2", "Option 3", "Option 4"]

进行检查是因为当缺少某些变量(在脚本前面声明)时,特定选项确认将不起作用。

例如

for x in range(a) 
    print "Menu Option

我将菜单放在一个循环中(意味着仅打印一次),菜单中的数字计数与字符串选项分开,当数组中多了 1 个元素来打印计数时,每个数字都会自动递增。 Option 变量放置在数组中。

用户将在选项中选择他/她想要的内容。假设用户选择“选项1”,它将转到数组(array = [“选项1”,“选项2”,“选项3”,“选项4”])来检查哪个位置。

记住阵列不是固定的!它的变化取决于脚本前面声明的变量。

所有验证都是为了防止错误、崩溃等!

最后我写了一个函数(有空格)

并且在循环中,它将调用该函数(带空格)。该函数需要链接回数组才能更改。

--------------------------------------------------------附加-- --------------------------------------

python function
6个回答
52
投票

需要用常规方式调用吗?

这是一个带有空格(和标点符号!)的函数名称

>>> def _func():
    print "YOOOO"


>>> globals()['Da func name!!1'] = _func

>>> globals()['Da func name!!1']()
YOOOO

5
投票

如果不修改 Python 解释器,你就不能(至少不能使用你的示例语法)

空格用于分隔标记,不仅在 Python 中如此,在英语(和其他几种语言)中也是如此。因此,即使您找到了一种方法来做到这一点,您的代码的可读性也会大大降低,因为您可能必须阅读整个短语才能弄清楚任何给定行上正在使用什么函数。

这类似于删除句子中的所有空格;你必须阅读整篇文章,并花更多的时间在心里解析它只是为了知道代码说了什么(更不用说它做了什么!)。


4
投票

在Python 3中,您可以使用包含符号但不包含标点符号的标识符。尝试使用几乎看不见的符号,例如中间的点 (U+00B7)。

# coding: utf-8

def my·Call():
    print("Hello World")

my·Call()

1
投票

如果有什么安慰的话,Tcl 编程语言强调“一切都是字符串”,并且字符串是any Unicode 字符的序列。 特别是,Tcl“proc”-s(与 Python 函数最接近的规范对应项)可以使用嵌入空格的字符串来命名。


1
投票

我参加聚会已经很晚了,但就这样吧。我通常会尝试使用类似

dict
之类的东西来实现这一点。但如果你真的想要一个功能,你可以尝试:

import test  # Name of the module

def hello():
    print('Hello World')

setattr(test, 'Hello World', hello)

# This can be in the calling module
getattr(test, 'Hello World')()

0
投票

对于任何来自 Scratch(或 Smalltalk)、想要重新创建的人

https://www.ghacks.net/2019/01/05/programming-for-kids-scratch-3-0-launches/

| rectangles aPoint collisions |
rectangles := OrderedCollection
  with: (Rectangle left: 0 right: 10 top: 100 bottom: 200)
  with: (Rectangle left: 10 right: 10 top: 110 bottom: 210).
aPoint := Point x: 20 y: 20.
collisions := rectangles select: [:aRect | aRect containsPoint: aPoint].

Python 允许通过使用命名(关键字)参数来引入间隔和散布在函数名称中的参数。

所以,从头开始的 glide 在 Python 中可以变成这样

glideSecs(1, to=random_point)

无法避免逗号、等号和括号带来的视觉噪音,但可以捕捉到原作的大部分精神。

© www.soinside.com 2019 - 2024. All rights reserved.