Почему код Python показывает ошибку при выполнении кода ниже? здесь переменная объявлена ​​глобально и не принимает значение глобальной переменной

Хотя верно, что сама команда не может отключить глобус, пользователь может сказать оболочке Unix, чтобы не глотать определенную команду. Обычно это делается путем редактирования файлов конфигурации оболочки. Предполагая, что команда foo может быть найдена по пути к команде, в соответствующий файл конфигурации необходимо добавить следующее:

Для оболочек sh, bash и ksh:

alias foo='set -f;foo';foo(){ command foo "$@";set +f;}

Для оболочек csh и tcsh:

alias foo 'set noglob;\foo \!*;unset noglob'

Для оболочки zsh:

alias foo='noglob foo'

Путь к командной строке не нужно использовать. Скажем, команда foo хранится в каталоге ~ / bin, а затем следующее:

Для оболочек sh, bash и ksh:

alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}

Для csh и tcsh shells:

alias foo 'set noglob;$home/bin/foo \!*;unset noglob'

Для оболочки zsh:

alias foo='noglob ~/bin/foo'

Все вышеперечисленное было протестировано с использованием OSX 10.9.2 от Apple. Примечание. При копировании вышеуказанного кода будьте осторожны при удалении любых пробелов. Они могут быть значительными.

Обновление:

Пользователь geira указал, что в случае оболочки bash

alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}

можно заменить на

reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'

, что устраняет необходимость в функции foo.

Некоторые веб-сайты, используемые для создания этого документа:

-2
задан John Gordon 27 February 2019 в 03:45
поделиться

2 ответа

Вы объявили fun1() требовать аргумента, а затем вы назвали его без указания аргумента.

0
ответ дан John Gordon 27 February 2019 в 03:45
поделиться

Вы объявили a как переменную, но для определения вашей функции требуется аргумент, который также называется a, но не связан с объявленной переменной.

Два варианта: вы можете передать переменную в функцию при вызове:

a=7 
def fun1(a): 
    if a%2==0: 
        return 0
    else: 
        return 1

fun1(a)

Или вы можете объявить a как global внутри функции, чтобы получить к ней доступ без необходимости передать его в качестве аргумента при вызове функции:

a=7 
def fun1(): 
    global a
    if a%2==0: 
        return 0
    else: 
        return 1

fun1()
0
ответ дан Toby Petty 27 February 2019 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: