Python 3: ввод в cmd для возврата функций - PullRequest
0 голосов
/ 01 июля 2018

В настоящее время я прорабатываю «Изучить Python как трудный путь» и приступил к первому упражнению о функциях. Это просто создание нескольких функций и их распечатывание, как в предыдущих примерах в книге`.

Код:

def print_two(*args):
    arg1, arg2 = args
    print("arg1: %r, arg2: %r" % (arg1, arg2))

def print_two_again(arg1, arg2):
    print("arg1: %r, arg2: %r" % (arg1, arg2))

def print_one(arg1):
    print("arg1: %r" % (arg1))

def print_none():
    print("I got nothing.")

print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

Вывод в cmd:

C:\Users\[USER]\Google Drive\Python\Learn Python the Hard Way>python ex18.py
arg1: 'Zed', arg2: 'Shaw'
arg1: 'Zed', arg2: 'Shaw'
arg1: 'First!'
I got nothing.

Я хочу немного поэкспериментировать с этим, поэтому вместо того, чтобы просто дать мне четыре вышеприведенных строки при запуске, я хочу иметь возможность ввести имя функции и затем вернуть результат. Я попробовал следующее, но, может быть, я просто не понимаю, как работает Python?

x = input("> ")
print(x)

Я не совсем уверен в терминологии, но это даст мне следующее в cmd:

C:\Users\[USER]\Google Drive\Python\Learn Python the Hard Way>python ex18.py
> print_none()  # This is something I write myself
I got nothing.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вопрос мог быть немного расплывчатым, но я сам нашел решение. То, что я искал, было функцией «import» скрипта в cmd, которая затем позволяет вводить команды и возвращать строки, которые были жестко заданы ранее:

C:\Users\[User]\Google Drive\Python\Learn Python the Hard Way>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on 
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ex18
arg1: 'Zed', arg2: 'Shaw'
arg1: 'Zed', arg2: 'Shaw'
arg1: 'First!'
I got nothing.
>>> ex18.print_none()
I got nothing.
>>>
0 голосов
/ 01 июля 2018
def print_two_again(arg1, arg2):
    print("arg1: %r, arg2: %r" % (arg1, arg2))

def print_one(arg1):
    print("arg1: %r" % (arg1))

if __name__ == '__main__':
    x = input("F name:")
    eval(x)

Пример:

/home/denis/zmqPG/bin/python /home/denis/PycharmProjects/useless/so2.py
F name:print_one(5)
arg1: 5
...