㈠ python程序如何使用参数
用sys模块,使用sys.argv接收参数,sys.argv是一个列表,第2个元素开始是传递进来的值,传递的时候用空格割开就好
import sys
for x in sys.argv:
....print(x)
㈡ python:matplotlib,魔法函数%matplotlib notebook,plot里style='k--o'是什么意思呢
知乎自己看网页链接:
matplotlib的plot函数接受一组X和Y坐标,还可以通过color、marker和linestyle关键字传入指定的颜色、标记和线型,或者用一个表示颜色、标记和线型的格式字符串替代,两种方法是等效的。格式字符串中color、marker和linestyle可以任意排列,如'ko--','k--o','o--k'
㈢ 为什么Python中的format有时候高亮有时候不高亮
format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。
1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型
2.单个参数可以多次输出,参数顺序可以不相同
3.填充方式十分灵活,对齐方式十分强大
4.官方推荐用的方式,%方式将会在后面的版本被淘汰
format的一个例子
print 'hello {0}'.format('world')
会输出hello world
format的格式
replacement_field ::= “{” [field_name] [“!” conversion] [“:” format_spec] “}”
field_name ::= arg_name (“.” attribute_name | “[” element_index “]”)*
arg_name ::= [identifier | integer]
attribute_name ::= identifier
element_index ::= integer | index_string
index_string ::= <any source character except “]”> +
conversion ::= “r” | “s” | “a”
format_spec ::= <described in the next section>
format_spec 的格式
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
fill ::= <any character>
align ::= ”<” | “>” | “=” | “^”
sign ::= ”+” | “-” | ” “
width ::= integer
precision ::= integer
type ::= ”b” | “c” | “d” | “e” | “E” | “f” | “F” | “g” | “G” | “n” | “o” | “s” | “x” | “X” | “%”
应用:
一 填充
1.通过位置来填充字符串
print'hello {0} i am {1}'.format('Kevin','Tom') #
hello Kevin i am Tom
print'hello {} i am {}'.format('Kevin','Tom') #
hello Kevin i am Tom
print'hello {0} i am {1} . my
name is {0}'.format('Kevin','Tom')# hello Kevin i am Tom .
my name is Kevin
foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 ……
也可以不输入数字,这样也会按顺序来填充
同一个参数可以填充多次,这个是format比%先进的地方
2.通过key来填充
print 'hello {name1} i am {name2}'.format(name1='Kevin',name2='Tom') # hello Kevin i am Tom
3.通过下标填充
names=['Kevin','Tom']
print'hello {names[0]} i am
{names[1]}'.format(names=names) #
hello Kevin i am Tom
print'hello {0[0]} i am {0[1]}'.format(names) #
hello Kevin i am Tom
4.通过字典的key
names={'name':'Kevin','name2':'Tom'}
print 'hello {names[name]} i am {names[name2]}'.format(names=names) # hello Kevin i am Tom
注意访问字典的key,不用引号的
5.通过对象的属性
classNames():
name1='Kevin'
name2='Tom'
print'hello {names.name1} i
am {names.name2}'.format(names=Names) #
hello Kevin i am Tom
6.使用魔法参数
args=['lu']
kwargs = {'name1': 'Kevin', 'name2': 'Tom'}
print 'hello {name1} {} i am {name2}'.format(*args, **kwargs) # hello Kevin i am Tom
二 格式转换
b、d、o、x分别是二进制、十进制、八进制、十六进制。
数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} 3.14 带符号保留小数点后两位
-1 {:+.2f} -1 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00E+09 指数记法
25 {0:b} 11001 转换成二进制
25 {0:d} 25 转换成十进制
25 {0:o} 31 转换成八进制
25 {0:x} 19 转换成十六进制
三 对齐与填充
数字 格式 输出 描述
5 {:0>2} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x^4} x10x 数字补x (填充右边, 宽度为4)
13 {:10} 13 右对齐 (默认, 宽度为10)
13 {:<10} 13 左对齐 (宽度为10)
13 {:^10} 13 中间对齐 (宽度为10)
四 其他
1.转义{和}符号
print'{{ hello {0} }}'.format('Kevin')
跟%中%%转义%一样,formate中用两个大括号来转义
2.format作为函数
f = 'hello {0} i am {1}'.format
print f('Kevin','Tom')
3.格式化datetime
now=datetime.now()
print'{:%Y-%m-%d %X}'.format(now)
4.{}内嵌{}
print 'hello {0:>{1}} '.format('Kevin',50)
5.叹号的用法
!后面可以加s r a 分别对应str() repr() ascii()
作用是在填充前先用对应的函数来处理参数
print"{!s}".format('2') #
2
print"{!r}".format('2') # '2'
差别就是repr带有引号,str()是面向用户的,目的是可读性,repr()是面向python解析器的,返回值表示在python内部的含义
ascii()一直报错,可能这个是3.0才有的函数
㈣ python函数的几种参数类型
#Python 2.5 #这个可以用修饰器来完成 #但是一般不会限制参数类型 #给你个思路: def argfilter(*types): def deco(func): #这是修饰器 def newfunc(*args): #新的函数 if len(types)==len(args): correct = True for i in range(len(args)): if not isinstance(args[i], types[i]): #判断类型 correct = False if correct: return func(*args) #返回原函数值 else: raise TypeError else: raise TypeError return newfunc #由修饰器返回新的函数 return deco #返回作为修饰器的函数 @argfilter(int, str) #指定参数类型 def func(i, s): #定义被修饰的函数 print i, s #之后你想限制类型的话, 就这样: #@argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名) #def yourfunc(第一个参数, 第一个参数, ..., 第N个参数): # ... # #相当于: #def yourfunc(第一个参数, 第一个参数, ..., 第N个参数): # ... #yourfunc = argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)(yourfunc)
㈤ python魔法方法是什么
魔法方法是python内置方法,不需要主动调用,存在的目的是为了给python的解释器进行调用,几乎每个魔法方法都有一个对应的内置函数,或者运算符,当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法,可以理解为重写这些python的内置函数。
python学习网,大量的免费python视频教程,欢迎在线学习!
我们在调用python类中的某个方法时,通常会看到某些特殊的方法,它们总被双下划线所包围,像这种格式:"__方法名__",这些方法很强大,充满魔力,可以让你实现很多功能。如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。
相关推荐:《Python教程》
因此了解这类方法的作用及用法很有必要,以下对基本魔法方法做出总结,请看表格:
㈥ python 函数参数 是什么意思
Python 函数定义以及参数传递
1.函数定义
#形如def func(args...):
doSomething123
以关键字def 开头,后面是函数名和参数下面是函数处理过程。
举例:
def add( a, b ):
return a+b12
参数可以设定默认值,如:
def add( a, b=10 ): #注意:默认值参数只会运算一次
return a+b12
默认值参数只会运算一次是什么意思?
def func( a, b=[] ): #b的默认值指向一个空的列表,每次不带默认值都会指向这块内存
b.append(a) return b
print(func(1))#向默认的空列表里加入元素1 ,默认列表里已经是[1]print(func(2))#向默认的列表里加入元素2,默认列表里已经是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默认列表里还是[1,2]print(func(4))#向默认的列表里加入元素4,默认列表里已经是[1,2,4]'''
结果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
这下明白为什么默认参数只计算一次了吧,函数参数不传递时默认值总是指向固定的内存空间,就是第一次计算的空间。
2.参数传递
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函数时可以如下方式,结果都是相同的
func(10,20) #不使用参数名,需要按参数顺序传递func(a=10,b=20) #使用参数名可以不按顺序传递func(b=20,a=10)#结果:a=10, b=20a=10, b=20a=10, b=201234567
如果函数定义形式如下方式:
def func(*args): #这种定义会把传递的参数包成元组
print(args,type(args))
func(10,20)#结果:#(10, 20) <class 'tuple'>1234567
举一个和上述过程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在调用函数使用`*`则会把元组解包成单个变量按顺序传入函数#结果:a=10, b=20123456
总结:*号在定义函数参数时,传入函数的参数会转换成元组,如果 *号在调用时则会把元组解包成单个元素。
另一种定义:
def func(**kw):#使用**定义参数会把传入参数包装成字典dict
print(kw, type(kw) )
func(a=10,b=20)#这种函数在使用时必须指定参数值,使用key=value这种形式#结果:{'b': 20, 'a': 10} <class 'dict'>12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在调用时使用**会把字典解包成变量传入函数。12345
def func(*args, **kw):#这种形式的定义代表可以接受任意类型的参数
print(args,kw )12
总结:**号在定义函数参数时,传入函数的参数会转换成字典,如果 **号在调用时则会把字典解包成单个元素。
lambda表达式
lambda表达式就是一种简单的函数
形如 f = lambda 参数1,参数2: 返回的计算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
结果:3
'''12345
㈦ python魔法,疑问
魔法方法是让你自己改的 不改当然没意义了 初学者说
㈧ 简述python函数中参数的几种形态
在调用函数时,通常会传递参数,函数内部的代码保持不变,针对 不同的参数处理不同的数据。
有位置传参、关键字传参、默认值参数、多值参数等。
1、参数传递
形参和实参:
形参:定义 函数时的 参数变量
实参:调用 函数时,使用的参数变量
参数传递的过程,就是 把实参的引用 传递给 形参 ,使用实参的值来执行函数体的过程。
在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的
2、位置实参
按照参数位置,依次传递参数,这是最普通的方式。
㈨ Python方法的几种常见参数类型
无默认值参数(关键字参数):
defmyfun(a):
print(a)
这是参数的最简单形式。这个a就是无默认值参数。在调用函数时必需为无默认值参数指定值。
无默认值参数可以通过两种方式来指定值:
#按参数定义顺序不指名传递值
myfun('/src/image')
#无视定义顺序,通过关键字指定值
myfun(a='/src/image')
无默认值参数在函数内部使用关键字作为变量名来访问
无默认值参数可以有多个,也是一些其它参数类型的基础。
默认值参数:
如果在定义时为参数指定一个默认值,那么,这个参数就可以在调用时不指定值:
defmyfun(a=''):
print(a)
#不为a指定值
myfun()
#按定义顺序为a指定值
myfun('/src/lib')
#通过关键字为a指定值
myfun(a='/src/lib')
在定义时,所有默认值参数只能出现在所有无默认值参数之后,也就是说,在函数的定义中,要先定义无默认值参数,再定义默认值参数。
不定长参数:
在参数名之前添加一个*号,则该参数称为不定长参数。一个函数只可以有一个不定长参数。不定长参数的定义位置没有限制,它可以定义在无默认值参数之间,也可以定义在默认值参数之后,或者它们之间的任何一个位置。
在调用时,不定长参数之后定义的无前两种类型的参数就只能使用关键字来指定值了。
不定长参数在函数内部被处理为一个tuple。
def_max(*e,base=9):
print('called"_max":')
print('e:',e)
print('base:',base)
#只向不定长参数传递了值
#输出:
#called"_max":
#e:(3,4,5)
#base:9
_max(3,4,5)
#也向默认值参数base传递了值
#输出:
#called"_max":
#e:(3,4)
#base:5
_max(3,4,base=5)
#直接通过一个元组传递不定长参数的值
#输出:
#called"_max":
#e:(3,4)
#base:5
p=(3,4)
_max(*p,base=5)
#使用混合方式传递不定长参数
#输出:
#called"_max":
#e:(3,4,5,6,7)
#base:10
p1=(3,4)
p2=(6,7)
_max(*p1,5,*p2,base=10)
调用函数时如果没有为不定长参数指定值,将导入一个空元组。
不定长关键字参数:
不定长关键字参数使用两个星号作为前缀与其它类型的参数区分,它在函数内被导入为一个字典。调用时需要为不定长关键字参数给出约定的关键字名,赋值形式如同无默认值参数。
一般情况下,不定长参数是作为最后一个参数来定义。
defmyfun(**kw):
print(kw)
myfun(base=1,home='aaaa')
以上只是基本的调用方式,有些时候,可以有更有趣的调用方式,例如定义了一个既含无默认值参数也含默认值参数的函数:
defiter_dir(homedir,exts='*',includesubdir=False,monoinfile=False,
titlere='^[^^].*',textengine=default_textengine,
encode=None):
调用时也可以用这样的方式来传递值:
kwgs={'homedir':'C:/Users/hunte/Documents/yun/阿瑟·C·克拉克',
'exts':'txt',
'includesubdir':True}
myiter=iter_dir(**kwgs)
forfileinmyiter:
pass
㈩ 简单谈谈Python中函数的可变参数
简单谈谈Python中函数的可变参数
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
可变参数( * )
可变参数,顾名思义,它的参数是可变的,比如列表、字典等。如果我们需要函数处理可变数量参数的时候,就可以使用可变参数。
我们在查看很多Python源码时,经常会看到 某函数(*参数1, **参数2)这样的函数定义,这个*参数和**参数就是可变参数,一时会让人有点费解。其实只要把函数可变参数的定义搞清楚了,就不难理解了。
当我们不知道需要用几个参数来定义函数的时候,可变参数就可以大展手脚了。
在Python里,带 * 的参数就是用来接受可变数量参数的。
如果一个函数定义如下:
def functionTest(*args):
....
....
....
调用时我们可以的这样调用:
functionTest(1)
或者
functionTest(1,2)
或者
functionTest(1,2,3)
后面可以传入多个参数。
看段实例代码,观察下*是怎么具体应用的吧:
def get_sum(*numbers):
sum = 0
for n in numbers:
sum += n
return sum
#在这里写下你的代码来调用get_sum来求5个数字的和,并输出这个结果
print (get_sum(1,2,3,4,5))
结果会是什么呢?大家可以自己动手操作起来看下,以就是关于Python中函数可变参数的全部内容,希望这篇文章对大家学习或使用python能有所帮助