2016 - 2024

感恩一路有你

python在固定坐标点画图 python中bar函数的用法?

浏览量:2977 时间:2023-07-05 14:42:38 作者:采采

python中bar函数的用法?

在 Python 中,bar 函数是指 matplotlib 库中的 bar 函数,它用于绘制条形图。

该函数的语法如下

(x, height, width, bottom, align)

其中:

x:每个条形的横坐标,可以是数值或数字列表。

height:每个条形的高度,可以是数值或数字列表。

width:每个条形的宽度,可以是一个数字,默认为 0.8。

bottom:每个条形的底部位置,可以是数值或数字列表,默认为 0。

align:条形的对齐,可以是 center、edge 或 center,默认为 center。

示例代码:

import as plt

# 准备数据

x [A, B, C, D]

y [3, 7, 5, 9]

# 绘制条形图

(x, y, colorblu

python中location填什么?

location 获取元素坐标,先找到要获取的元素,再调用该方法

Gui按键怎样设置设置位置?

1.打开手机找到设置,然后点击进

2.进入后会显示有,常用设置和全部设置,然后点击全部设置。

3.进入全部设置会出现“导航栏”三个字,然后点击导航栏。

4.然后就会出现两种可供选择的按键,就可以按照自己喜欢的按键设置就可以了。

Python中属性和作用域的关系是什么?

传递参数

函数传递参数时的一些简要的关键点:

参数的传递是通过自动将对象赋值给本地变量名来实现的。所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝。在函数内部的参数名的赋值不会影响调用者。改变函数的可变对象参数的值会对调用者有影响。实际上,Python的参数传递模型和C语言的相当相似:

不可变参数”通过值”进行传递。像整数和字符串这样的对象是通过对象引用而不是拷贝进行的,但是因为不论怎么样都不可能在原处改变不可变对象,实际的效果就很像创建了一份拷贝。可变对象是通过”指针”进行传递的。这就意味着,可变对象能够在函数内部进行原处修改。gtgt避免可变参数的修改避免参数的修改有很多种

传递参数时,传递一个拷贝:

L [1,2]

chang:])函数内部进行拷贝

def chang:

bb[:]将可变对象转化为不可变对象

L[1,2]

chang:因为r:

x 2

y [2,4]

r:一个包含了2个元素的元组,它的括号是可以省略的。

特定的参数匹配模型

gtgt基础知识匹配模型的大纲:

位置:从左至右进行匹配。关键字参数:通过参数名进行匹配。(调用者可以定义哪一个函数接受这个值,通过在调用时使用参数的变量名,使用nam:为没有传入值的参数定义参数值。可变参数:搜集任意多基于位置或关键字的参数。可变参数解包:传递任意多的基于位置或关键字的参数。K:参数必须按照名称传递。(只存在于Python3.0中)gtgt匹配语法

语法位置  解释func(valu:通过位置进行匹配。func(nam:通过变量名匹配。func(*sequence)调用者以name传递所有的对象,并作为独立的基于位置的参数。func(**dict)调用者以name成对的传递所有的关键字/值,并作为独立的关键字参数。def func(nam:通过位置或变量名进行匹配。def func(namevalue)函数默认参数值,如果在调用中传递的话。def func(*name)函数匹配并收集(在元组中)所有包含位置的参数。def func(**name)函数匹配并收集(在字典中)所有包含位置的参数。def func(*args,name)函数参数必须在调用中按照关键字传递。def func(*,nam:

在函数的调用中(表中的前4行),简单的通过变量名位置进行匹配,但是使用namevalue的形式告诉Python依照变量名进行匹配,这些叫做关键字参数。在调用中使用*sequence或**dict允许我们在一个序列或字典中相应地封装任意多的位置相关或者关键字的对象,并且在将他们传递给函数的时候,将它们解包为分开的、单个的参数。在函数的头部,一个简单的变量名时通过位置或变量名进行匹配的(取决于调用者是如何传递给它参数的),但是nam:任何位置参数(value),后面跟着任何关键字参数(namevalue)和*sequence形式的组合,后面跟着**dict形式。在函数头部,参数必须以此顺序出现:任何一般参数(nam:

通过位置分配非关键字参数。通过匹配变量名分配关键字参数。其他额外的非关键字分配到*name元组中。其他额外的关键字参数分配到**name字典中。用默认值分配给在头部未得到分配的参数。在这之后,Python会进行检测,确保每个参数只传入了一个值。如果不是这样的话,将会。当所有匹配都完成了,Python把传递给参数名的对象赋值给它们。gtgt关键字参数和默认参数的实例如果没有使用任何特殊的匹配语法,Python默认会通过位置从左至右匹配变量名。

def f(a,b,c):

print(a,b,c)

f(1,2,3) #Prints 1,2,3关键字参数

关键字参数允许通过变量名进行匹配,而不是通过位置。

f(c3,b2,a1) #Prints 1,2,3默认参数

默认参数允许创建函数可选的参数。如果没有传入值的话,在函数运行前,参数就被赋了默认值。

def f(a,b2,c3):

print(a,b,c)

f(1) #Prints 1,2,3

f(1,4) #Prints 1,4,3

f(1,c6) #Prints 1,2,6关键字参数和默认参数的混合

def func(spam,:

print((spam,eggs,totast0,ham0))

func(1,2) #Ouput:(1,2,0,0)

func(1,ham1,:(1,0,0,1)

func(spam1,:(1,0,0,0)

func(toast1,:(3,2,1,0)

func(1,2,3,4) #Ouput:(1,2,3,4)gtgt任意参数的实例最后两种匹配扩展,*和**,是让函数支持接收任意数目的参数的。

收集参数

在函数定义中,在元组中收集不匹配的位置参数。

d:print(args)当这个函数调用时,Python将所有位置相关的参数收集到一个新的元组中,并将这个元组赋值给变量args。因此它是一个一般的元组对象,能够进行索引或迭代。

**特性类似,但是它只对关键字参数有效。将这些关键字参数传递给一个新的字典,这个字典之后将能够通过一般的字典工具进行处理。在这种情况下,**允许将关键字参数转化为字典,你能够在之后使用键调用进行步进或字典迭代。

d:print(a,pargs,kargs)

f(1,2,3,x1,y2) #Prints:1 (2,3) {x:2,y:1}解包参数

在最新的Python版本中,我们在调用函数时能够使用*语法。在这种情况下,它与函数定义的意思相反。它会解包参数的集合,而不是创建参数的集合。

def func(a,b,c,d):print(a,b,c,d)

args(1,2)

args (3,4)

func(*args) #Prints 1,2,3,4相似的,在函数调用时,**会以键/值对的形式解包一个字典,使其成为独立的关键字参数。

args{a:1,b:2,c:3}

args[d]4

func(**args) #Prints 1,2,3,4注意:别混淆函数头部和函数调用时*/**的语法:在头部,它意味着收集任意多的参数,而在调用时,它解包任意数量的参数。

应用函数通用性

if ltt:

action,argsfunc1,(1,)

:

action,argsfunc2,(1,2,3)

...

action(*args)gtgtPython3.0 Keyword-Only参数Python3.0把函数头部的排序规则通用化了,允许我们指定keyword-only参数——即必须只按照关键字传递并且不会由一个位置参数来填充的参数。

从语法上讲,keyword-only参数编码为命名的参数,出现在参数列表中的*args之后。所有这些参数都必须在调用中使用关键字语法来传递。

我们也可以在参数列表中使用一个*字符,来表示一个函数不会接受一个变量长度的参数列表,而是仍然期待跟在*后面的所有参数都作为关键字传递。

def kwonly(a,*,b,c):

print(a,b,c)

kwonly(1,c3,b2) #Prints:1,2,3

kwonly(c3,b2,a1) #Prints:1,2,3

kwonly(1,2,3) #Error!上述代码中,b和c必须按照关键字传递,不允许其他额外的位置传递。

另外,默认函数仍然对keyword-only参数有效,所以,实际上,带有默认值的keyword-only参数都是可选的,但是,那些没有默认值的keyword-only参数真正地变成了函数必需的keyword-only参数。

排序规则 最后,注意keyword-only参数必须在一个单个星号后指定,而不是两个星号——命名的参数不能出现在**args任意关键字形式的后面,并且一个**不能独自出现在参数列表中。这两种做法将产生错误。

def kwonly(a,**pargs,b,c) #Error!

def kwonly(a,**,b,c) #:

def f(a,*b,c6,**d):print(a,b,c,d)

f(1,*(2,3),**dict(x4,y5)) #Prints:1 (2,3) 6 {x:4,y:5}

f(1,*(2,3),**dict(x4,y5),c7) #Error!

f(1,*(2,3),c7,**dict(x4,y5)) #Prints:1 (2,3) 7 {x:4,y:5}

f(1,c7,*(2,3),**dict(x4,y5)) #Prints:1 (2,3) 7 {x:4,y:5}

f(1,*(2,3),**dict(x4,y5,c7)) #Prints:1 (2,3) 7 {x:4,y:5}Python作用域

在一个Python程序只用变量名时,Python创建、改变或查找变量名都是在所谓的命名空间(一个保存变量名的地方)中进行的。也就是说,在代码中变量名被赋值的位置决定了这个变量名能被访问到的范围,也即决定了它存在于哪个命名空间中。

除了打包程序之外,函数还为程序增加了一个额外的命名空间层:默认情况下,一个函数所有变量名都是与函数的命名空间相关联的。这意味着:

一个在d:

内嵌的模块是全局作用域 每个模块都是一个全局作用域(也就是说,一个创建于模块文件顶层的变量的命名空间)。对于模块外部来说,该模块的全局变量就成为了这个模块对象的属性,但是在这个模块中能够像简单的变量一样使用。全局作用域的作用范围仅限于单个文件 这里的全局指的是在一个文件的顶层的变量名仅对于这个文件内部的代码而言是全局的。在Python中是没有基于一个单个的、无所不包的情景文件的全局作用域的。每次对函数的调用都创建了一个新的本地作用域赋值的变量名除非声明为全局变量或非局部变量,否则均为局部变量所有的变量名都可以归纳为本地、全局或者内置的gtgt变量名解析:L:

本地作用域(L)上一层结构中d:

xs

r:

import builtins

dir(builtins)因此,事实上有两种方法可以引用一个内置函数:通过L:

全局变量是位于模块文件内部顶层的变量名。全局变量如果是在函数内部被赋值的话,必须经过声明。全局变量名在函数的内部不经过声明也可以被引用。global语句包含了关键字global,其后跟着一个或多个由逗号分开的变量名。当在函数主题被赋值或引用时,所有列出来的变量名将被映射到整个模块的作用域内。 举个例子:

X88

def func():

global X

X 99

func()

print(X) #Prints 99作用域和嵌套函数

这部分内容是关于L:

一个引用(X)首先在本地(函数内)作用域查找变量名X;之后会在代码的语法上嵌套了的函数中的本地作用域,从内到外查找;之后查找当前的全局作用域(模块文件);最后在内置作用域内(模块builtin)。全局声明将会直接从全局(模块文件)作用域进行搜索。其实就是从引用X的地方开始,一层一层网上搜索,直到找到的第一个X。在默认情况下,一个赋值(Xvalue)创建或修改了变量名X的当前作用域。如果X在函数内部声明为全局变量,它将会创建或改变变量名X为整个模块的作用域。另一方面,如果X在函数内部声明为nonlocal,赋值会修改最近的嵌套函数的本地作用域中的名称X。gtgt嵌套作用域举例

X 99

d:

X 88

d:

print(X)

f2()

f1() #Prints 88:enclosing def local首先需要说明的是,上面这段代码是合法的,d:

X 88

d:

print(X) #Remember X in enclosing def scope

return f2 #Return f2 but dont call it

action f1() #Make return function

action() #Call it now:Prints 88上述代码中,不管调用几次action函数,返回值都是88,f2记住了f1中嵌套作用域中的X,尽管此时f1已经不处于激活的状态。

工厂函数

上述这些行为有时叫做闭合(closur:

d:

def action(X):

return X ** N

return action

fmak: 3**2,R:

def makeActions():

acts[]

for i in rang: #Tries to remember each i

(lambda x: i ** x) #All remember same last it

return acts尽管是在尝试创建一个函数列表,使得每个函数拥有不同的状态值,但是事实上,这个列表中的函数的状态值都是一样的,是4。因为嵌套作用域中的变量在嵌套的函数被调用时才进行查找,所以它们实际上记住的是同样的值(在最后一次循环迭代中循环变量的值)。

为了能让这类代码能够工作,必须使用默认参数把当前的值传递给嵌套作用域的变量。因为默认参数是在嵌套函数创建时评估的(而不是在其稍后调用时),每一个函数记住了自己的变量i的值。

def makeActions():

acts[]

for i in rang: #Us: i ** x) #Remember current i

return acts

{nonlocal语句

事实上,在Python3.0中,我们也可以修改嵌套作用域变量,只要我们在一条nonlocal语句中声明它们。使用这条语句,嵌套的def可以对嵌套函数中的名称进行读取和写入访问。nonlocal应用于一个嵌套的函数的作用域中的一个名称,而不是所有def之外的全局模块作用域——它们可能只存在于一个嵌套的函数中,并且不能由一个嵌套的def中第一次赋值创建。

换句话说,nonlocal即允许对嵌套的函数作用域中的名称变量赋值,并且把这样的名称作用域查找限制在嵌套的def。

gtgtnonlocal基础

def func():

nonlocal name1,name2...这条语句允许一个嵌套函数来修改在一个语法嵌套函数的作用域中定义的一个或多个名称。在Python 2.X中,当一个函数def嵌套在另一个函数中,嵌套的函数可以引用上一层函数中定义的各种变量,但是不能修改它们。在Python3.0中,在一条nonlocal语句中声明嵌套的作用域,使得嵌套的函数能够赋值,并且由此也能够修改这样的名称。

除了允许修改嵌套的def中的名称,nonlocal语句还加快了引用——就像global语句一样,nonlocal使得对该语句中列出的名称的查找从嵌套的def的作用域中开始,而不是从声明函数的本地作用域开始,也就是说,nonlocal也意味着”完全略过我的本地作用域”。

实际上,当执行到nonlocal语句的时候,nonlocal中列出的名称必须在一个嵌套的d:global意味着名称位于上一层的模块中,nonlocal意味着它们位于一个上一层的def函数中。nonlocal甚至更加严格——作用域查找只限定在嵌套的def。也就是说,nonlocal只能出现在嵌套的def中,而不能在模块的全局作用域中或def之外的内置作用域中。

当在一个函数中使用的时候,global和nonlocal语句都在某种程度上限制了查找规则:

global使得作用域查找从嵌套的模块的作用域开始,并且允许对那里的名称赋值。如果名称不存在与该模块中,作用域查找继续到内置作用域,但是,对全局名称的赋值总是在模块作用域中创建或修改它们。nonlocal限制作用域查找只是嵌套的def,要求名称已经存在于那里,并且允许对它们赋值。作用域查找不会继续到全局或内置作用域。gtgtnonlocal应用使用nonlocal进行修改

d: state start # Each call has its own stat: non-local state # Remember the state print(label, State)state 1 # If it is returned locally, it is allowed to chang:spam0f (ham) # printsh:ham1f (: eggs 2 boundary case When executing a non-local statement, the non-local name must have been assigned in an excellent nested scope, otherwise you will get an error that is not local. Restricted scope search is only a nested definition, and non-local search will not be found in the global scope of nested modules or all built-in scopes other than excellent ones.

函数 参数 作用域 位置

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。