相关疑难解决方法(0)

Python:为什么functools.partial是必要的?

部分应用很酷.什么功能functools.partial提供你无法通过lambdas?

>>> sum = lambda x, y : x + y
>>> sum(1, 2)
3
>>> incr = lambda y : sum(1, y)
>>> incr(2)
3
>>> def sum2(x, y):
    return x + y

>>> incr2 = functools.partial(sum2, 1)
>>> incr2(4)
5
Run Code Online (Sandbox Code Playgroud)

functools某种程度上更有效,或可读?

python functional-programming partial-application

183
推荐指数
6
解决办法
4万
查看次数

如果只有功能B需要功能A应该在B内定义A?

简单的例子.两种方法,一种叫另一种方法:

def method_a(arg):
    some_data = method_b(arg)

def method_b(arg):
    return some_data
Run Code Online (Sandbox Code Playgroud)

在Python中,我们可以def在另一个内部声明def.因此,如果method_b需要并且仅从中调用method_a,我应该method_b在内部声明method_a吗?像这样 :

def method_a(arg):

    def method_b(arg):
        return some_data

    some_data = method_b
Run Code Online (Sandbox Code Playgroud)

或者我应该避免这样做?

python coding-style

140
推荐指数
8
解决办法
24万
查看次数

如何将参数传递给RequestHandler?

Python文档包含创建HTTP服务器的示例:

def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

RequestHandler提供了一个类Server,然后负责自动实例化处理程序.

假设我想在创建请求处理程序时将自定义参数传递给它.我该怎么做?

更具体地说,我想从命令行传入参数,并且必须访问sys.argv请求处理程序类内部似乎不必要地笨拙.

看起来这应该是可以通过覆盖Server类的部分,但我觉得我忽略了一个更简单和更好的解决方案.

python

25
推荐指数
5
解决办法
1万
查看次数

所有的callables都有__name__吗?

我有一个装饰器,记录装饰功能的名称(以及其他内容).

访问__name__装饰函数的属性是否安全?或者是否有一些可调用的类型没有我尚未遇到的名称?

python

10
推荐指数
2
解决办法
1472
查看次数

闭包,部分和装饰

我三者之间很困惑.我知道闭包是由另一个函数返回的函数,并且可以从封闭范围访问局部变量

例:

def add_nums(one):
    def adder(two):
        return one+two
    return adder

a_10 = add_nums(10)
print a_10(5)
15
Run Code Online (Sandbox Code Playgroud)

在这里,adder是一个封闭.

但是,这也不是一个例子 partial

from functools import partial
a_10 = partial(add_nums, 10)
print a_10()(5)
15
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

此外,装饰器用于向函数添加功能.

def add_nums(one):
    def adder(two):
        print "foo, bar"
        return one+two
    return adder

a_10 = add_nums(10)
print a_10(5)
foo, bar
15
Run Code Online (Sandbox Code Playgroud)

这三者有什么区别?

python

6
推荐指数
3
解决办法
2553
查看次数

如何在 PySpark 中将多个参数传递给 Pandas UDF?

我正在使用以下代码片段:

from cape_privacy.pandas.transformations import Tokenizer

max_token_len = 5


@pandas_udf("string")

def Tokenize(column: pd.Series)-> pd.Series:
  tokenizer = Tokenizer(max_token_len)
  return tokenizer(column)


spark_df = spark_df.withColumn("name", Tokenize("name"))
Run Code Online (Sandbox Code Playgroud)

由于 Pandas UDF 仅使用 Pandas 系列,我无法max_token_len在函数调用中传递参数Tokenize("name")

因此我必须max_token_len在函数范围之外定义参数。

这个问题中提供的解决方法并没有真正的帮助。此问题是否还有其他可能的解决方法或替代方案?

请指教

python user-defined-functions pandas pyspark

5
推荐指数
1
解决办法
6197
查看次数