❶ python 定义函数
python 定义函数:
在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用:
1. 默认参数
最常用的一种形式是为一个或多个参数指定默认值。
>>> def ask_ok(prompt,retries=4,complaint='Yes or no Please!'):
while True:
ok=input(prompt)
if ok in ('y','ye','yes'):
return True
if ok in ('n','no','nop','nope'):
return False
retries=retries-1
if retries<0:
raise IOError('refusenik user')
print(complaint)
这个函数可以通过几种方式调用:
只提供强制参数
>>> ask_ok('Do you really want to quit?')
Do you really want to quit?yes
True
提供一个可选参数
>>> ask_ok('OK to overwrite the file',2)
OK to overwrite the fileNo
Yes or no Please!
OK to overwrite the fileno
False
提供所有的参数
>>> ask_ok('OK to overwrite the file?',2,'Come on, only yes or no!')
OK to overwrite the file? test
Come on, only yes or no!
OK to overwrite the file?yes
True
2. 关键字参数
函数同样可以使用keyword=value形式通过关键字参数调用
>>> def parrot(voltage,state='a stiff',action='voom',type='Norwegian Blue'):
print("--This parrot wouldn't", action, end=' ')
print("if you put",voltage,"volts through it.")
print("--Lovely plumage, the",type)
print("--It's",state,"!")
>>> parrot(1000)
--This parrot wouldn't voom if you put 1000 volts through it.
--Lovely plumage, the Norwegian Blue
--It's a stiff !
>>> parrot(action="vooooom",voltage=1000000)
--This parrot wouldn't vooooom if you put 1000000 volts through it.
--Lovely plumage, the Norwegian Blue
--It's a stiff !
>>> parrot('a thousand',state='pushing up the daisies')
--This parrot wouldn't voom if you put a thousand volts through it.
--Lovely plumage, the Norwegian Blue
--It's pushing up the daisies !
但是以下的调用方式是错误的:
>>> parrot(voltage=5, 'dead')
SyntaxError: non-keyword arg after keyword arg
>>> parrot()
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <mole>
parrot()
TypeError: parrot() missing 1 required positional argument: 'voltage'
>>> parrot(110, voltage=220)
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <mole>
parrot(110, voltage=220)
TypeError: parrot() got multiple values for argument 'voltage'
>>> parrot(actor='John')
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <mole>
parrot(actor='John')
TypeError: parrot() got an unexpected keyword argument 'actor'
>>> parrot(voltage=100,action='voom',action='voooooom')
SyntaxError: keyword argument repeated
Python的函数定义中有两种特殊的情况,即出现*,**的形式。
*用来传递任意个无名字参数,这些参数会以一个元组的形式访问
**用来传递任意个有名字的参数,这些参数用字典来访问
(*name必须出现在**name之前)
>>> def cheeseshop1(kind,*arguments,**keywords):
print("--Do you have any",kind,"?")
print("--I'm sorry, we're all out of",kind)
for arg in arguments:
print(arg)
print("-"*40)
keys=sorted(keywords.keys())
for kw in keys:
print(kw,":",keywords[kw])
>>> cheeseshop1("Limbuger","It's very runny, sir.","It's really very, very runny, sir.",shopkeeper="Michael Palin",client="John",sketch="Cheese Shop Sketch")
--Do you have any Limbuger ?
--I'm sorry, we're all out of Limbuger
It's very runny, sir.
It's really very, very runny, sir.
----------------------------------------
client : John
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch
>>>
3. 可变参数列表
最常用的选择是指明一个函数可以使用任意数目的参数调用。这些参数被包装进一个元组,在可变数目的参数前,可以有零个或多个普通的参数
通常,这些可变的参数在形参列表的最后定义,因为他们会收集传递给函数的所有剩下的输入参数。任何出现在*args参数之后的形参只能是“关键字参数”
>>> def contact(*args,sep='/'):
return sep.join(args)
>>> contact("earth","mars","venus")
'earth/mars/venus'
4. 拆分参数列表
当参数是一个列表或元组,但函数需要分开的位置参数时,就需要拆分参数
调用函数时使用*操作符将参数从列表或元组中拆分出来
>>> list(range(3,6))
[3, 4, 5]
>>> args=[3,6]
>>> list(range(*args))
[3, 4, 5]
>>>
以此类推,字典可以使用**操作符拆分成关键字参数
>>> def parrot(voltage,state='a stiff',action='voom'):
print("--This parrot wouldn't", action,end=' ')
print("if you put",voltage,"volts through it.",end=' ')
print("E's", state,"!")
>>> d={"voltage":"four million","state":"bleedin' demised","action":"VOOM"}
>>> parrot(**d)
--This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
5. Lambda
在Python中使用lambda来创建匿名函数,而用def创建的是有名称的。
python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量
python lambda它只是一个表达式,而def则是一个语句
>>> def make_incrementor(n):
return lambda x:x+n
>>> f=make_incrementor(42)
>>> f(0)
42
>>> f(2)
44
>>> g=lambda x:x*2
>>> print(g(3))
6
>>> m=lambda x,y,z:(x-y)*z
>>> print(m(3,1,2))
4
6. 文档字符串
关于文档字符串内容和格式的约定:
第一行应该总是关于对象用途的摘要,以大写字母开头,并且以句号结束
如果文档字符串包含多行,第二行应该是空行
>>> def my_function():
"""Do nothing, but document it.
No, really, it doesn't do anything.
"""
pass
>>> print(my_function.__doc__)
Do nothing, but document it.
No, really, it doesn't do anything.
❷ Python中如何定义字符串
在Python中字符串是不可改变的对象(immutable),因此无法直接修改字符串的某一位字符。
一种可行的方式,是将字符串转换为列表,修改列表的元素后,在重新连接为字符串。
示例代码如下:
s = 'abcdefghijk' #原字符串l = list(s) #将字符串转换为列表,列表的每一个元素为一个字符l[1] = 'z' #修改字符串的第1个字符为znewS = ''.join(l) #将列表重新连接为字符串print(newS)#azcdefghijk #修改后的字符串
❸ Python基本语法与变量分别是什么
【导语】Python的语法和其它编程语言的语法有所不同,编写Paython程序之前需要对语法有所了解,才能编写规范的Python程序,那么Python基本语法与变量分别是什么?如何在Python编程中进行使用呢?下面就来具体了解一下吧。
1、Python的多行语句
如语句过长,导致编辑器的窗口宽度不能完全完全显示时。就可以使用“”符合将一行语句分为多行显示。
2、Python引导
在Python语言中,引号主要用于表示字符串。可以使用单引号(')、双引号(”)、三引号(’’’),引号必须成对使用。单引号和双引号用于程序中的字符串表示;三引号允许一个字符串可以跨多行、字符串中可以包含换行符、制表符以及其他特殊字符,三引号也用于程序中的注释。
3、Python标识符
标识符用于Python语言的变量、关键字、函数、对象等数据的命名,标识符的命名需要遵循下面的规则:
(1)可以由字母(大写A—Z或小写a—z)、数字(0—9)和_(下划线)组合而成,但不能由数字开头;
(2)不能包含除_以外的任何特殊字符,如:%、#、&、逗号、空格等;
(3)不能包含空白字符(换行符、空格和制表符称为空白字符);
(4)标识符不能是Python语言的关键字和保留字;
(5)标识符区分大小写,num1和Num2是两个不同的标识符。
(6)标识符的命名要有意义,做到见名知意。
4、Python关键字
Python预先定义了一部分有特别意义的标识符,用于语言自身使用。这部分标识符称为关键字或保留字,不能用于其它用途,否则会引起语法错误,随着Python语言的发展,其预留的关键字也会有所变化。表1列出了Python预留的关键字。
5、变量
用标识符命名的存储单元的地址称为变量,变量是用来存储数据的,通过标识符可以获取变量的值,也可以对变量进行赋值。对变量赋值的意思是将值赋给变量,赋值完成后,变量所指向的存储单元存储了被赋的值,在Pyhton语言中赋值操作符为“=、+=、-=、*=、/=、%=、**=、//=”。
当程序使用变量存储数据时,必须要先声明变量,然后才能使用。可以在变量声明时给变量赋值,也可以不赋值。声明变量时,不需要声明数据类型,Python会自动选择数据类型进行匹配。
以上就是Python基本语法与变量相关内容,希望大家在进行Python编程的时候能够重视和有效利用起来,当然学习是一个长期的过程,所以一定要不断学习,加油!
❹ python中z=3.4+1.2j是什么意思
这是一个复数。
在python中,复数使用m+nj的型式,其中,m为实数部,n为虚数部,j可以认为是根号下负1。
❺ python 函数参数、列表定义
我也是正在学PYthon的基础语法。
题主忘记了你后面paraTestList(a[2:])中,括号内的a[2:]命令是创建了一个包含列表a的一部分的一个副本列表,这样是不会改变列表a的实际内容的。打印出的a肯定也是不会变的。
具体做法是
def paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
希望能帮到你。
❻ 计算机python中的标注是什么意思
标准解释如下,希望能帮到你
句法和词法解析的描述采用经过改进的 BNF 语法标注。这包含以下定义样式:
name ::= lc_letter (lc_letter | "_")*
lc_letter ::= "a"..."z"
第一行表示 name 是 lc_letter 之后跟零个或多个 lc_letter 和下划线。而 lc_letter 则是任意单个 'a' 至 'z' 字符。(实际上在本文档中始终采用此规则来定义词法和语法规则的名称。)
每条规则的开头是一个名称 (即该规则所定义的名称) 加上 ::=。竖线 (|) 被用来分隔可选项;它是此标注中最灵活的操作符。星号 (*) 表示前一项的零次或多次重复;类似地,加号 (+) 表示一次或多次重复,而由方括号括起的内容 ([ ]) 表示出现零次或一次 (或者说,这部分内容是可选的)。* 和 + 操作符的绑定是最紧密的;圆括号用于分组。固定字符串包含在引号内。空格的作用仅限于分隔形符。每条规则通常为一行;有许多个可选项的规则可能会以竖线为界分为多行。
在词法定义中 (如上述示例),还额外使用了两个约定: 由三个点号分隔的两个字符字面值表示在指定 (闭) 区间范围内的任意单个 ASCII 字符。由尖括号 (<...>) 括起来的内容是对于所定义符号的非正式描述;既可以在必要时用来说明 '控制字符' 的意图。
它是此标注中最灵活的操作符。星号 (*) 表示前一项的零次或多次重复;类似地,加号 (+) 表示一次或多次重复,而由方括号括起的内容 ([ ]) 表示出现零次或一次 (或者说,这部分内容是可选的)。* 和 + 操作符的绑定是最紧密的;圆括号用于分组。固定字符串包含在引号内。空格的作用仅限于分隔形符。每条规则通常为一行;有许多个可选项的规则可能会以竖线为界分为多行
虽然所用的标注方式几乎相同,但是词法定义和句法定义是存在很大区别的: 词法定义作用于输入源中单独的字符,而句法定义则作用于由词法分析所生成的形符流。在下一章节 ("词法分析") 中使用的 BNF 全部都是词法定义;在之后的章节中使用的则是句法定义。
❼ python手册中 x[, y[, z]] 是什么意思 (譬如static str.maketrans(x[, y[, z]]) )
放在中括号中的参数表示是可选的,static表示静态方法,可以直接用类名调用
static str.maketrans(x,y,[,z]])表示这个方法可以接受一,二或三个参数,这个方法的返回值可用于字符串的translate方法进行字符映射替换
当只有一个参数时,这个参数必须是字典,比如
smap=str.maketrans({'a':'firstletter'})
print('abcdef'.translate(smap))
将打印'firstletterbcdef',即将字符a替换为firstletter
如果有两个参数,则两个参数必须是等长字符串,用于对字符进行一对一映射,比如
smap=str.maketrans('abc','hij')
print('abcdef'.translate(smap))
将打印'hijdef',即a替换为b,b 映射为i,c映射为j
如果还有三个参数,则第三个参数中的字符将被删除,比如
smap=str.maketrans('abc','hij','def')
print('abcdef'.translate(smap))
将打印'hij'
❽ python中pow(x,y[,z])函数怎么使用
你的语法有错误。
内置函数power(x, y[, z])中的x和y是必选参数,z是可选参数;如果使用了参数z,中括号必须去掉,即power(x,y,z),其结果是x的y次方再对z求余数,但是这种方式比power(x,y) % z的执行效率要高。
你可以使用power(2, 4)或者power(2,4,3)。
power(2,4)=2的4次方=16;
power(2,4,3)=2的4次方再模上3=16 % 3=1。