python-将一个函数的值调用到另一个函数参数中

时间:2019-04-28 16:04:59

标签: python-3.x

在func1()中,我有一些变量,并且有值。我如何在func2()中调用func1()以获取所有变量和值,因为我想从func2()中选择规则。(因为我们无法在其他函数中使用局部变量)也有func3(),它需要func1 ()值。取得b(b> a)并传递回func2()以仅选择特定规则的条件是什么。

def func1():  
    a=1  
    b=2  
    c=3  
func1()
def func2():  
    if a==1:  
        print("rule=good")  
    elif b==2:  
        print("rule=poor")  
    elif c==3:  
        print("rule=very poor")  
func2()  
def func3():  
    if b>a: 

我们可以将func1()保存到变量中并将该变量传递给func2()参数吗? print(save)给出output = none

def func1():  
    a=1  
    b=2  
    c=3  
    save = func1()  
print(save)  
def func2(value):  
    if a==1:  
        print("rule=good")  
    elif b==2:  
        print("rule=poor")  
    elif c==3:  
        print("rule=very poor")  
func2(save)  
def func3():  
    if b>a: 

实际输出应为: func2给出:

   rule=good 
   rule=poor 
   rule=very poor 

func3仅给出:

   rule=poor

2 个答案:

答案 0 :(得分:0)

您似乎还不了解功能如何工作。您在功能之外无法使用import java.text.*; public class Currency { private double TotalPrice; // only one instance required NumberFormat nformat = NumberFormat.getCurrencyInstance(); public static void main(String[] args) { new Currency().start(); } public void start() { final double nightlyRate = 100.00; int elapse = 1020202220; // random value double elapsedDays = elapse / (24 * 60 * 60 * 1000.); TotalPrice = elapsedDays * nightlyRate; String formattedCurrency = formatCurrency(TotalPrice); System.out.println(formattedCurrency); } public String formatCurrency(double amount) { String fmtedCurrency = nformat.format(amount); return fmtedCurrency; } } (或return)中没有的任何功能。

要完成您想达到的目标(如果我理解正确的话),可以这样做:

  • yield中定义变量
  • 将变量作为func1传递到dictfunc2
  • 定义func3func2的方式应使它们将func3展开为变量。
dict

答案 1 :(得分:0)

首先,让我们为第二个函数定义一个近似值

def f2(a,b,c):
    if a==1: print('a equals 1')
    if b==2: print('b equals 2')
    if c==3: print('c equals 3')

接下来,您的第一个功能,请注意

  1. 您需要从第一个函数中返回值,
  2. 您返回的三个值被包装到一个对象中,即一个 tuple

所以我们的功能将会

def f1():
    # compute compute
    return 1,2,3

要将这些值传递给第二个函数,您必须解包返回的单个对象(一个元组)—要解压缩,您只需要知道< strong>拆包运算符是位于迭代器前面的单个*,因此您对f2的调用将写为

f2(*f1())

示例会话

$ python
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def f1():
...     # compute compute
...     return 1,2,3
... 
>>> def f2(a,b,c):
...     if a==1: print('a equals 1')
...     if b==2: print('b equals 2')
...     if c==3: print('c equals 3')
... 
>>> f2(*f1())
a equals 1
b equals 2
c equals 3
>>> ^D
$