Fed*_*ile 5 python variables input function
我有2个函数fun1,fun2分别作为输入字符串和数字.这两个输入都是相同的变量a.这是代码:
a = ['A','X','R','N','L']
def fun1(string,vect):
out = []
for letter in vect:
out. append(string+letter)
return out
def fun2(number,vect):
out = []
for letter in vect:
out.append(str(number)+letter)
return out
x = fun1('Hello ',a)
y = fun2(2,a)
Run Code Online (Sandbox Code Playgroud)
这些函数执行一些无意义的操作.我的目标是以这样的方式重写代码,即变量a在函数之间共享,这样它们就不再将它作为输入.
删除变量a作为输入的一种方法是在函数本身中定义它,但不幸的是,这不是很优雅.你能告诉我一个可能达到目标的方法吗?
函数应该以相同的方式操作,但输入参数应该只是字符串和数字(fun1(string),fun2(number)).
osp*_*hiu 14
面向对象的编程有助于:
class MyClass(object):
def __init__(self):
self.a = ['A','X','R','N','L'] # Shared instance member :D
def fun1(self, string):
out = []
for letter in self.a:
out.append(string+letter)
return out
def fun2(self, number):
out = []
for letter in self.a:
out.append(str(number)+letter)
return out
a = MyClass()
x = a.fun1('Hello ')
y = a.fun2(2)
Run Code Online (Sandbox Code Playgroud)
inv*_*tus 11
使用类的替代方法::您可以使用全局键盘来使用位于函数外部的变量.
a = 5
def func():
global a
return a+1
print (func())
Run Code Online (Sandbox Code Playgroud)
这将打印6
但应尽可能避免全局变量
由于在函数范围之外a定义并且在定义函数之前,您不需要将其作为参数提供,您可以简单地使用a.Python将首先查看变量是否在函数范围内定义,如果没有,它会在该范围之外查看.
a = ['A','X','R','N','L']
def fun1(string):
out = []
for letter in a:
out.append(string+letter)
return out
def fun2(number):
out = []
for letter in a:
out.append(str(number)+letter)
return out
x = fun1('Hello ')
y = fun2(2)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您还可以将函数重写为更优雅的列表推导:
a = ['A','X','R','N','L']
def fun1(string):
return [string+letter for letter in a]
def fun2(number):
return [str(number)+letter for letter in a]
x = fun1('Hello ')
y = fun2(2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14285 次 |
| 最近记录: |