⑴ python的函数都有哪些
Python 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def functionname( parameters ): "函数_文档字符串"
function_suite
return [expression]
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
实例
以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。
实例(Python 2.0+)
def printme( str ): "打印传入的字符串到标准显示设备上"
print str
return
函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
如下实例调用了printme()函数:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定义函数def printme( str ): "打印任何传入的字符串"
print str
return
# 调用函数printme("我要调用用户自定义函数!")printme("再次调用同一函数")
以上实例输出结果:
参数传递
在 python 中,类型属于对象,变量是没有类型的:
a=[1,2,3]
a="Runoob"
以上代码中,[1,2,3]是 List 类型,"Runoob"是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值a=5后再赋值a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
python 传不可变对象实例
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
def ChangeInt( a ): a = 10
b = 2ChangeInt(b)print b # 结果是 2
实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。
传可变对象实例
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def changeme( mylist ): "修改传入的列表"
mylist.append([1,2,3,4])
print "函数内取值: ", mylist
return
# 调用changeme函数mylist = [10,20,30]changeme( mylist )print "函数外取值: ", mylist
实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:
参数
以下是调用函数时可使用的正式参数类型:
必备参数
关键字参数
默认参数
不定长参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用printme()函数,你必须传入一个参数,不然会出现语法错误:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printme( str ): "打印任何传入的字符串"
print str
return
#调用printme函数printme()
以上实例输出结果:
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printme( str ): "打印任何传入的字符串"
print str
return
#调用printme函数printme( str = "My string")
以上实例输出结果:
下例能将关键字参数顺序不重要展示得更清楚:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printinfo( name, age ): "打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数printinfo( age=50, name="miki" )
以上实例输出结果:
默认参数
调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printinfo( name, age = 35 ): "打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数printinfo( age=50, name="miki" )printinfo( name="miki" )
以上实例输出结果:
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串"
function_suite
return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。不定长参数实例如下:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple: print var
return
# 调用printinfo 函数printinfo( 10 )printinfo( 70, 60, 50 )
以上实例输出结果:
匿名函数
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda函数的语法只包含一个语句,如下:
如下实例:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
以上实例输出结果:
return 语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def sum( arg1, arg2 ): # 返回2个参数的和."
total = arg1 + arg2
print "函数内 : ", total
return total
# 调用sum函数total = sum( 10, 20 )
以上实例输出结果:
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
全局变量
局部变量
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
total = 0 # 这是一个全局变量# 可写函数说明def sum( arg1, arg2 ): #返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total
#调用sum函数sum( 10, 20 )print "函数外是全局变量 : ", total
以上实例输出结果:
⑵ Python中怎么用字符串来命名一个函数
有2个标准库函数可以完成你说的要求,建议用eval()
eval() 和exec()
区别是eval()有返回值
deftest1():
print"Test1Excuted!"
returnTrue
ret=eval("test1()")
printret
结果如下
>>>
Test1Excuted!
True
而exec()只执行,并无返回值。
deftest2():
print"Test2Excuted!"
returnTrue
exec("test2()")
结果如下
>>>
Test2Excuted!
>>>
如果要将exec()赋值,会有以下语法错误!
ret=exec("test2()")
⑶ 如何进行Python字符串操作
它合理地结合了高性能与使得编写程序简单有趣的特色,下面讲述python字符串操作流程。要使用string的方法要先import,但后来由于众多的python使用者的建议,从python2.0开始, string方法改为用S.method()的形式调用,只要S是一个字符串对象就可以这样使用,而不用import。同时为了保持向后兼容,现在的Python中仍然保留了一个string的mole。阐述编制Python程序相关注意什么是Python 解释器及其使用?深度剖析Python Web 应用程序怎样正确安装Python?浅析Python中的Python全局变量其中定义的方法与python字符串操作是相同的,这些方法都最后都指向了用S.method ()调用的函数。要注意,S.method()能调用的方法比string的mole中的多,比如isdigit()、istitle()等就只能用 S.method()的方式调用。 对一个字符串对象,首先想到的操作可能就是计算它有多少个字符组成,很容易想到用S.len(),但这是错的,应该是len(S)。因为len()是内置函数,包括在__builtin__模块中。python字符串操作不把len()包含在string类型中,乍看起来好像有点不可理解,其实一切有其合理的逻辑在里头。len()不仅可以计算字符串中的字符数。还可以计算 list的成员数,tuple的成员数等等,因此单单把len()算在string里是不合适,因此一是可以把len()作为通用函数。用重载实现对不同类型的操作,还有就是可以在每种有len()运算的类型中都要包含一个len()函数。 Python选择的是第一种解决办法。类似的还有str(arg)函数,它把arg用string类型表示出来。 字符串中字符大小写的变换:S.lower() #小写 S.upper() #大写 S.swapcase() #大小写互换 S.capitalize() #首字母大写 String.capwords(S) 字符串在输出时的对齐:S.lower() #小写 S.upper() #大写 S.swapcase() #大小写互换 S.capitalize() #首字母大写 String.capwords(S) 字符串中的搜索和替换:S.lower() #小写 S.upper() #大写 S.swapcase() #大小写互换 S.capitalize() #首字母大写 String.capwords(S) 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 deletechars参数。可以使用把某个字符翻译为python字符串操作的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
⑷ python中如何设计一个函数来接收一个字符串并返回一个没有重复的新字符串。
函数内部的部分
a=list(set(x))
a.sort()
x=''
for i in a:
x+=i
最后的这个x就是去重排序后的字符串
⑸ python函数统计字符串中字母数学其他字符的个数
代码如下:
text = "Hello Python,Hello 2021."
letter = 0
digital = 0
other = 0
for i in text:
if i.isalpha():
letter += 1
elif i.isdigit():
digital += 1
else:
other += 1
print('字母:{} 数字:{} 其他:{}'.format(letter,digital,other))
输出:
字母:16 数字:4 其他:4
下面是Python内置关于判断字符串类型的方法介绍:
str.isalnum()
如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回True, 否则返回False。 如果c.isalpha(),c.isdecimal(),c.isdigit(),或c.isnumeric()之中有一个返回True,则字符``c``是字母或数字。
str.isalpha()
如果字符串中的所有字符都是字母,并且至少有一个字符,返回True,否则返回False。字母字符是指那些在 Unicode 字符数据库中定义为 "Letter" 的字符,即那些具有 "Lm"、"Lt"、"Lu"、"Ll" 或 "Lo" 之一的通用类别属性的字符。 注意,这与 Unicode 标准中定义的"字母"属性不同。
str.isascii()
如果字符串为空或字符串中的所有字符都是 ASCII ,返回True,否则返回False。ASCII 字符的码点范围是 U+0000-U+007F 。
3.7 新版功能.
str.isdecimal()
如果字符串中的所有字符都是十进制字符且该字符串至少有一个字符,则返回True, 否则返回False。十进制字符指那些可以用来组成10进制数字的字符,例如 U+0660 ,即阿拉伯字母数字0 。 严格地讲,十进制字符是 Unicode 通用类别 "Nd" 中的一个字符。
str.isdigit()
如果字符串中的所有字符都是数字,并且至少有一个字符,返回True,否则返回False。 数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字。这包括了不能用来组成 10 进制数的数字,如 Kharosthi 数。 严格地讲,数字是指属性值为 Numeric_Type=Digit 或 Numeric_Type=Decimal 的字符。
str.isidentifier()
如果字符串是有效的标识符,返回True,依据语言定义,标识符和关键字节。
调用keyword.iskeyword()来检测字符串s是否为保留标识符,例如def和class。
⑹ Python里的几个字符串处理函数
目前字符串直接加点的方法没法增加,可行的方法是重载或者扩展类。下面是一个扩展的例子。class string(str): def __init__(self, s): self.s = s def totest(self): print('This is a test.for ' + self.s) if __name__ == '__main__': abc = string('abc') print(abc.split('b')) abc.totest()
⑺ python编写函数计算任意字符串出现次数
python本身就有一个count()函数可以用来统计字符串中单个字母出现次数
def fun(s):
count = string.count('a')
return count
string = input('请输入字符串:')
a = input('请输入你要查找的字符:')
print(fun(a))
⑻ python 有没有函数可以把字符串每两个字符一组变成列表。
这是python中的字符串的功能。其实当使用加号运算符的时候会调用这个类的__add__()函数,这个函数是每个类都有的,对于自定义的类,不重写这个方法,+这个运算符就没作用。你也可以重写这个运算符来得到不同的功能。以下是示例代码。class
vector:
def
__init__(self,x=0,y=0):
self.x=x
self.y=y
def
__add__(self,
other):#重载__add__方法,可以实现+法运算
if
isinstance(other,vector):
return
vector(self.x+other.x,self.y+other.y)
else:
raise
TypeError('other
parameter
must
be
a
vector')
va=vector(3,5)vb=vector(4,6)vc=va+vbprint('vc.x=%s;vc.y=%s'%(vc.x,vc.y))
⑼ Python中字符串常用操作有哪些
字符串是 Python
中常用的数据类型,我们可以使用引号('或")来创建字符串,对字符串进行使用和操作,需要用到特定的函数,以下是常用的Python字符串操作方法:
1. capitalize()
作用:capitalize() 主要是用来实现字符串首字母大写,其他字母小写的功能。
实例:
1
2str1 = "oldboy"
print(str1.capitalize())
输出结果:Oldboy
2. swapcase()
作用:swapcase() 主要是用来实现字符串大小写反转。
实例:
1
2str1 = " Oldboy"
print(str1.swapcase())
输出结果:oLDBOY
3. title()
作用:title() 主要是用来实现字符串非字母隔开的部分,首字母大写,其余字母小写。
实例:
1
2str1 = "Old boy e com"
print(str1.title())
输出结果:Old Boy E Com
4. upper()
作用:upper() 主要是用来实现字符串所有字母全部大写。
实例:
1
2str1 = "Oldboye"
print(str1.upper())
输出结果:OLDBOYEDU
5. lower()
作用:lower() 主要是用来实现字符串所有字母全部小写。
实例:
1
2str1 = "oLDBOYEDU"
print(str1.lower())
输出结果:oldboye
6. center()
作用:center() 主要是用来实现字符串内容居中,填充物默认为空。
实例:
1
2
3str1 = "Oldboye"
print(str1.center(15))
print(str1.center(15,"*"))
输出结果:
Oldboye
***Oldboye***
7. find()
作用:find() 主要作用是通过元素找索引,可以整体找,可以切片,找不到则返回-1。
实例:
1
2
3str1 = "Oldboye"
print(str1.find('b'))
print(str1.find('A'))
输出结果:3 -1
8. index()
作用:index() 主要作用是通过元素找索引,可以整体找,可以切片,找不到会报错。
实例:
1
2
3str1 = " Oldboye "
print(str1.index("b"))
print(str1.index("A"))
输出结果:
0
Traceback (most recent call last):
File "", line 1, in
ValueError: substring not found
9. startswith(obj)
作用:startswith(obj) 主要作用是检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。
实例:
1
2str1 = "Oldboye"
print(str1.startswith("O"))
输出结果:True
10. endswith(obj)
作用:endswith(obj) 主要作用是检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。
实例:
1
2str1 = " Oldboye "
print(str1.endswith("e"))
输出结果:True
11. strip()
作用:strip() 主要作用是去除字符串前后两端的空格或其他字符、换行符、tab键等。
实例:
1
2
3
4str1 = "***Oldboy***"
print(str1.strip("*")) #去除两边的*
print(str1.lstrip("*")) #去除左边的*
print(str1.rstrip("*")) #去除右边的*
输出结果:
Oldboy
Oldboy***
***Oldboy
12. replace(oldstr, newstr)
作用:replace(oldstr, newstr)主要作用是替换字符串。
实例:
1
2str1 = "Oldboye"
print(str1.replace("boy","man"))
输出结果:Oldmane
13. isalpha()
作用:isalpha()主要作用是要判断字符串是否只由字母组成,是返回Ture,否返回False。
实例:
1
2
3
4str1 = "Oldboye"
str2 = “Old boy e”
print(str1.isalpha())
print(str2.isalpha())
输出结果:True False
14. isdigit()
作用:isdigit()主要作用是判断字符串是否只由数字组成,是返回Ture,否返回False。
实例:
1
2
3
4str1 = "Oldboye"
str2 = “520”
print(str1.isdigit())
print(str2.isdigit())
输出结果:False True
15. format()
作用:format()主要作用是格式化字符串。
方式一:按位置传参
1
2str1 = '我叫{},今年{}岁'.format('oldboy',30)
print(str1)
输出结果:我叫oldboy,今年30岁
方式二:按索引传参
1
2str1 = '我叫{0},今年{1}岁'.format('oldboy',30)
print(str1)
输出结果:我叫oldboy,今年30岁
方式三:按key传参
1
2str1 = '我叫{name},今年{age}岁'.format(age=30,name='oldboy')
print(str1)
输出结果:我叫oldboy,今年30岁
16. count()
作用:count()主要作用是统计元素在字符串出现的次数。
1
2str1 = "oldboye"
print(str1.count(‘o’)) #统计字符o在字符串中出现的次数
数据结果:2