如何导入模块/函数以及如何知道哪些关键字可以传递给内置函数

2024-06-22 09:13:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的第一个问题是函数实际上是如何导入的?我有下面的语句,但是show()函数不在bokeh.plotting中,而是在另一个文件夹/模块中,即bokeh.io.showing,那么它是如何使用bokeh.plotting导入的

from bokeh.plotting import figure, output_notebook, show 

下一个问题是:以下函数中使用了一些关键字:

p = figure(width = 400, height = 400)

我怎么知道这里可以使用哪些关键字?我知道如果我使用python的帮助函数,它可以给出一些想法,但这里只显示以下内容

figure(**kwargs)
    Create a new Figure for plotting.

没有提到哪些是关键字,可以在这个函数中使用

我打开源代码,得到了以下信息:

def __init__(self, *arg, **kw):

        if 'plot_width' in kw and 'width' in kw:
            raise ValueError("Figure called with both 'plot_width' and 'width' supplied, supply only one")
        if 'plot_height' in kw and 'height' in kw:
            raise ValueError("Figure called with both 'plot_height' and 'height' supplied, supply only one")
        if 'height' in kw:
            kw['plot_height'] = kw.pop('height')
        if 'width' in kw:
            kw['plot_width'] = kw.pop('width')

所以我知道什么可以用在这个(宽度/高度),但有没有其他方法


Tags: and函数inifplotshowbokeh关键字
2条回答

它接受**kwargs这一事实意味着传递给函数的任何关键字参数都是有效参数

这通常是针对较低级别实现的包装器完成的。 这样做的好处是不必更改中间函数(您调用的函数-例如bokeh.figure,它在内部调用matplotlib函数)

缺点是,由于它接受任何关键字参数,因此很难为它维护文档,因为当中间函数实现发生更改时,以及当基础函数的实现发生更改时,必须更新文档

这在许多数据科学库中是一种非常常见的做法(尽管您会发现一些非常流行的库会经历维护文档的艰苦过程,例如matplotlib)

一般来说,这些中间函数通常接受(*args和**kwargs),因为bokeh的图形不接受它,所以不能将类似于图(1,2,3)的东西传递给它

如果这是你第一次遇到**的东西(把列表和字典作为参数解包),这可能是一个很好的时间谷歌搜索相同的,因为这是一个非常常见的情况

就可接受的论据而言,我发现:

关键字参数: Figure Documentation

活动拖动(任意(自动、字符串、实例(拖动)): 哪个拖动工具最初应该处于活动状态(默认值:'自动')

活动的检查(Auto、String、Instance(检查)、Seq(Instance(检查)): 哪个拖动工具最初应该处于活动状态(默认值:'自动')

活动滚动(自动、字符串、实例(滚动)): 哪个滚动工具最初应该处于活动状态(默认值:'自动')

活动点击(自动、字符串、实例(点击)): 哪个攻丝工具最初应处于激活状态(默认值:'自动')

工具(或(字符串,序列(或(字符串,实例(工具))): 绘图应该从工具开始(default:'平移、滚轮\u缩放、框\u缩放、保存、重置、帮助')

工具提示(字符串,列表(元组(字符串,字符串))): 配置地物工具提示的可选参数。此参数接受与HoverTool.tooltips属性相同的值。如果在tools参数中指定了悬停工具,则此值将覆盖该悬停工具工具提示值。如果在tools参数中没有指定悬停工具,那么在这里传递工具提示将导致创建和添加工具提示(默认值:无)

x\U轴\U标签(字符串): x轴的标签(默认值:“”)

x轴位置(枚举(垂直位置)): x轴的位置(default:'低于')

x_轴类型(或(Auto、Enum(枚举(linear、log、datetime、mercator))): x轴的类型(默认值:'自动')

x_次要_记号(任意(Auto,Int)): 相邻x轴主记号之间的次记号数(默认值:'自动')

x\U范围(任何): 自定义绘图的x范围(默认值:无)

y轴\标签(字符串): y轴的标签(默认值:“”)

y轴位置(枚举(水平位置)): y轴的位置(default:'左')

y轴类型(自动、枚举(枚举(线性、对数、日期时间、墨卡托)): y轴的类型(默认值:'自动')

小刻度(任意(Auto,Int)): 相邻y轴主记号之间的次记号数(默认值:'自动')

y\ U范围(任何): 自定义绘图的x范围(默认值:无)

是的

我发现得到关键词的唯一方法是给出一些错误的关键词,例如len。它将给我们AttributeError和期望值。我运行了以下命令:

p = figure(width = 400, height = 400, background_fill_color='black',len=1)

它给了我以下信息:

AttributeError: unexpected attribute 'len' to Figure, possible attributes are above, align, aspect_ratio, aspect_scale, background, background_fill_alpha, background_fill_color, below, border_
fill_alpha, border_fill_color, center, css_classes, disabled, extra_x_ranges, extra_y_ranges, frame_height, frame_width, height, height_policy, hidpi, inner_height, inner_width, js_event_callb
acks, js_property_callbacks, left, lod_factor, lod_interval, lod_threshold, lod_timeout, margin, match_aspect, max_height, max_width, min_border, min_border_bottom, min_border_left, min_border
_right, min_border_top, min_height, min_width, name, outer_height, outer_width, outline_line_alpha, outline_line_cap, outline_line_color, outline_line_dash, outline_line_dash_offset, outline_l
ine_join, outline_line_width, output_backend, plot_height, plot_width, renderers, right, sizing_mode, subscribed_events, tags, title, title_location, toolbar, toolbar_location, toolbar_sticky,
 visible, width, width_policy, x_range, x_scale, y_range or y_scale

我不确定我的另一个问题

编辑: 我的另一个问题也得到了答案。import语句检查init.py文件,并且该文件中的所有对象都可以访问使用。在本例中,show()已导入

from ..io import show; show

相关问题 更多 >