首页 > 代码库 > 第三篇、内置方法
第三篇、内置方法
一、
作用域 只要在内存里面存在,则就能使用。(栈) 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 上面这两句话对吗? 答案:是不对的 如: If 1==1: Name = ‘alex’ Print name 判断如下:能打印出来吗? Name = {”ns”,123} For item in name: Print item Print item 为什么不能打印出来的原因: 理解1: 变量都是指向了内存地址,而item这个内存地址,没有变量指向所以不能被打印
二 、三元运算
三元运算就是if else的变种
If xxx:
Pass
Else:
Pass
案例:
Name = ‘alex’
If 1==1:
Name = ‘sb’
Else:
Name = ‘2b’
运用三元运算如下:
Name = 值
Name = 1 if 条件 else 2 意思是如果这个条件满足,就执行name=1否则等于2
案例 转化 :Name = ‘sb’ if 1==1 else ‘2b’ Pyrene =int( input().strip()) If pyrene >1: Print “aa” Else: Print “bb”
三、整形内置方法
python,一切事物都是对象,对象基于类创建 对象的属性和方法都是属于一个类 1、 在python终端里面 type查看对象的类型 type(a) dir(类型名) 查看类中提供的所有功能呢个 Help(类) :查看命令的帮助信息 help(类.方法)查看类的具体使用方法 2、 在IDE里面 ctrl+鼠标左键点击需要查看的内容就能看到详细信息1 3、 类中的方法: __方法__:内置方法:可能有多种执行方法 方法 : 只有一种执行方法,对象.方法
内置方法
>>> dir(int) [‘__abs__‘, ‘__add__‘, ‘__and__‘, ‘__class__‘, ‘__cmp__‘, ‘__coerce__‘, ‘__delattr__‘, ‘__div__‘, ‘__divmod__‘, ‘__doc__‘, ‘__float__‘, ‘__floordiv__‘, ‘__format__‘, ‘__getattribute__‘, ‘__getnewargs__‘, ‘__hash__‘, ‘__hex__‘, ‘__index__‘, ‘__init__‘, ‘__int__‘, ‘__invert__‘, ‘__long__‘, ‘__lshift__‘, ‘__mod__‘, ‘__mul__‘, ‘__neg__‘, ‘__new__‘, ‘__nonzero__‘, ‘__oct__‘, ‘__or__‘, ‘__pos__‘, ‘__pow__‘, ‘__radd__‘, ‘__rand__‘, ‘__rdiv__‘, ‘__rdivmod__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rfloordiv__‘, ‘__rlshift__‘, ‘__rmod__‘, ‘__rmul__‘, ‘__ror__‘, ‘__rpow__‘, ‘__rrshift__‘, ‘__rshift__‘, ‘__rsub__‘, ‘__rtruediv__‘, ‘__rxor__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__sub__‘, ‘__subclasshook__‘, ‘__truediv__‘, ‘__trunc__‘, ‘__xor__‘, ‘bit_length‘, ‘conjugate‘, ‘denominator‘, ‘imag‘, ‘numerator‘, ‘real‘]
.1、相加
如下面的例子
>>> 1+1 2 >>> n1=1 >>> n2=n1 >>> n1+n2 2 >>> n1.__add__(n2) 2
2、绝对值
>>> n1 = -9 >>> n1.__abs__() →方法一 9 >>> abs(-9) →方法二 9 上面的是内置方法的绝对值方法
3、进制数
I = 10 等价于I = int(10) Int(“10”,base=2) 这里的意思:前面的引号里面代表的是进制数,base表示多少进制 进制占用最少位数 Def bit_length(self): ‘’’返回表示该数字的进制占用的最少位数 如:>>> bin(3) ‘0b11‘
4、比较
两个数相比较的方法,如果第一个数大于第二个数,得出来的值为1,如果相等得到的是0,如果小于,得出来的值就是-1
方法一 Age =19 Age.__cmp__(18) 方法二 Cmp(19,18)
5 强制生成一个元祖
Def__coerce__(self,y): 强制生成一个元祖 x.__coerce__(y) <==>coerce(x,y) Age = 10 Age.__coerce__(15) (10,15)
6 取商
Def__div__(self,y): X,__div__(y)<==>x/y
7、转换成浮点类型
Def __float__(self): 转换成浮点类型 x.__float__()<==>float(x) 代码例子: >>> type(age) <type ‘int‘> >>> float(age) 1.0 >>> age.__float__() 1.0 >>>
8、地板除 不保留小数位的除
Def__floordiv__(self,y) x.__floordiv__(y) <==> x//y 如: 5.0//2 得到的结果是2
9、
Def __fomat__(self,”y”)
X,__format__(“y”)
给x前面加上y个空格
>>> age.__format__("10") ‘ 1‘ >>>
10、
Def__hash__(self):
如果对象object为哈希表类型,返回对象object的哈希值。哈希值为整数
在字典查找中,哈希值用于快速比较字典中的键
x.__hash__()<==>hash(x)
11、
Def__hex__(self):
返回当前数的十六进制表示
X,__hex__()<==>hex(x)
>>> age = 16 >>> age.__hex__() ‘0x10‘ 八进制是 Def__oct__()
12、
Def__init__(self,x,base=10)
构造方法
13、
1 Def__invert__(self): 2 x.__invert__() 3 取反
14、
Def__mod__(self,y): 取模(得到他的余数) x.__mod__(y)<==>x%y
15、两个数相乘
Def__mul__(self,y): x.__mul__(y) <==>x*y
16、取这个数的负值和正值
取这个数的负值 Def __neg__(self): x.__neg__() <==>-x Def__pos__(self) 取这个数的正数 x.__pos__() <==>+x
17、这个值不等于0
Def__nonzero__(self): x.__nonzero__() <==>x !=0
18、次方
Def__pow__(self): x.__pow__(y[,z])<==> x**y
19、反过来相加(两个数颠倒过来相加)
Def__radd__(self): X.__radd__(y)<==> y+x
20
Def__repr__(self) 转化为解释器可读取的形式 x.__repr__() <==>repr
21、
Def__str__(self): 转换为人阅读的形式 x.__str__() <==>str
为什么一个对象能切片?因为里面有index方法
四、浮点型的内置方法
Def as_integer_ratio(self): 获取改值的最简比 如: >>> (10.0).as_integer_ratio() (10, 1) >>> (0.0).as_integer_ratio() (0, 1) >>> (-.25).as_integer_ratio() (-1, 4) >>> Def fromhex(self,string): 将十六进制字符串转换成浮点型 >>> float.fromhex(‘0x1.ffffp10‘) 2047.984375 >>> float.fromhex(‘-0x1p-1074‘) -5e-324
五、字符串的内置方法
扩展:
在IDE里面查看一个类的方法:
在project旁边的大齿轮右键点击,
把show menbers点亮
之后点击Scroll from Source
1、 创建字符串方法有下面两种方式
Str = “aaa”
Str1 = str(“”aaa”)
2、首字母变大写
Def capitalize(self):
s.capitalize() →string
3、内容居中,width:总长度;fillchar 填充的内容
Def center(self,width,fillchar=none) s.center(width[,fillchar]) →s. 需求:name=“aric”创建一个长度为20的字符串,然后让name居中显示 >>> name.center(20,"*") ‘********alex********‘ >>>
4、子序列个数
Def.count(self,sub,start=none) 子序列个数 s.count(sub[,start[,end]]) →int 例子: >>> name="dasdsdadsdwasss" >>> name.count("s") 6 >>> name.count("s",0,10) →指定从0开始到10下标位置有一共有多少s,注意这里不包含坐标10 3
5、是否以.xxx结束.如果是的话就返回true,否则返回false
Def endswich(self,suffix,start=None,end=None) s.endswith(syffix[,start[,end]]) → 代码如下 >>> name = ‘alex‘ >>> name.endswith(‘lex‘) True
6、将tab转换成空格,默认一个tab转换成8个字节
Def expandtabs(self,tabsize=None): s.expandtabs([tabsize]) →string 代码如下: >>> name = ‘ale x‘ >>> name.expandtabs() ‘ale x‘ >>> name.expandtabs(1) ‘ale x‘ >>> name.expandtabs(0) ‘alex‘ >>> name.expandtabs(8) ‘ale x‘ >>> name.expandtabs(9) ‘ale x‘ >>>
7、寻找子序列的位置,如果没找到,则异常返回-1
Def find(self,sub,start=none,end=none) s.find(sub [,start[end]]) 代码如下: >>> name = ‘alex‘ >>> name.find(‘le‘) →如果有多个,则只返回找到第一个子序列的位置 1 >>> name.find(‘e‘) 2 >>> name.find(‘s‘) →如果子序列中没有则返回-1 -1 >>>
8、字符串格式化,动态参数,将函数式编程
Def format(*args,**kwargs)
s.format(*args,**kwargs)
1、 >>> name = "i m {0},age{1}" →这个是按照name的参数下标进行传参 >>> name.format(‘alex‘,73) ‘i m alex,age73‘ 2、 >>> name = "i m {ss},age{dd}" →参数的指定传参 >>> name.format(ss=‘alex‘,dd=84) ‘i m alex,age84‘ 3、当需要传入的是列表或者元祖的时候,需要在列表名或者元祖名前面加上*号 >>> name = "i m {0},age {1}" >>> li =[222,333] →要把这个列表的参数传入到name字符串中 >>> name.format(*li) →这里如果传入的是列表或者元祖的时候需要在列表名或者元祖名字前面加上*号 ‘i m 222,age 333‘ 4、当传入的是字典的时候,需要在格式化方法中加入两个*号,需要注意字符串中的参数字节和字典中的key中的字节要一样,否则会报错 >>> name = "i m {ss},age {dd}" >>> dic = {‘ss‘:123,‘dd‘:456} →这里的key要和name中的字符串需要替换的参数是一样的 >>> name.format(**dic) →这里传入的时候需要在前面带两个** ‘i m 123,age 456‘
9、子序列位置,如果找到那就找到,如果没有找到,那么就会报错
Def index(self,sub,start=None,end=None): s.index(sub [,start [,end]]) →int 这里和s.find的区别是: find的方法:如果找到就返回找到的下标,如果没有找到那么就会返回-1。 index的方法:如果找到那就返回找到的下标,如果没有找到就会报错 代码如下: >>> name = "alex" >>> name.index(‘a‘) 0 >>> name.index(‘c‘) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
10、是否是字母和数字
Def isalnum(self): s.isalnum()→ bool(布尔) 代码如下: >>> name = ‘alex‘ >>> name.isalnum() True >>> name = "中文" >>> name.isalnum() False
11、
1、Def isalpha(self): 是否是字母 s.isalpha() →bool 2、Def isdigit(self): 是否是数字 s.isdigit() →bool 3、Def islower(self): 是否是小写 s.islower() →bool 代码示例 >>> name = "alex" >>> name.islower() True
12、 是否是空格
Def isspace(self): 是否是空格
s.isspace →bool
13、是否是标题
Def istitle(self): 是否是标题 s.istitle() →bool 代码如下: >>> name = "al" >>> name.title() →这是一个把字符串转化为标题的方法,下面可以看出标题开头大写 ‘Al‘ >>> name.istitle() →判断标题 False >>> name = "Hello Alex" >>> name.istitle() →判断标题 True
14、def isupper(self):
s..isupper() →是否是大写
15、字符串列表等连接、拼接
Def join(self): 字符串列表等连接、拼接 s.join(iterable) →str 代码例子: >>> li = [‘s1‘,‘s2‘] >>> ‘_‘.join(li) ‘s1_s2‘
16、
Def ljust(self,sidth,fill)): 指定字节,然后减去原来所占的字节数,之后剩下的在右 s.ljoun(width[,fillch]) 例子 >>> name.ljust(30,"=") 这里是指定字节,这里指定一共30个,然后减去原来所占的字节数,之后剩下的在右边填充 ‘Hello Aaa====================‘
17、
Def lower(self): 变小写 s.lower() →string 例子: >>> name ‘Hello AAAA‘ >>> name.lower() →这里是把大写编程小写 ‘hello aaaa‘ >>> name.upper() →这里是把小写编程大写 ‘HELLO AAAA‘
18、
Def swapcase(self): 大写变小写,小写变大写 s.swapcase() 代码例子: >>> name ‘Hello AAAA‘ >>> name.swapcase() ‘hELLO aaaa‘
19、
Def lstrip(self,chars=None): 移除左侧空白
s.lstip([chars])
20、
Def partition(self,sep): 分割,前,中,后 s.partition(sep) → 代码例子: >>> name ‘Hello Alex‘ >>> name.partition(‘ll‘) →这里是以l作为分隔符,分割成下面的左半部分 (‘He‘, ‘ll‘, ‘o Alex‘)
21、
Def replace(self,old,new):替换 s.replace(old,new[,]) >>> name ‘Hello Alex‘ >>> name.replace(‘Al‘,‘al‘) →这里是把Al替换成al,注意这里会把这个字符串中的所有的Al都替换成al,如,下面就把所有的替换成了* ‘Hello alex >>> name.replace(‘e‘,‘**‘) →这里把字符串中的所有的e都替换成了* ‘H**llo rl**x
22、
Def rfind(self,sub,start): 从右边开始找字符串中的下标,没有找到返回-1 s.rfind(sub [,start]) Def rindex(self): 从右边开始找字符串的下标 s.rindex() Def rjust(self): 指定宽度,填充左边数据 s.rjust() Def rpartition(self): 从右边开始分割 s.rpartition() 代码如下: >>> name ‘Hello Alex‘ >>> name.rpartition("e") (‘Hello Al‘, ‘e‘, ‘x‘) Def rsplit(self,sep=None): 从右开始到左分割 s.rsplite()
23、
以什么开始
Def startswich(self):
s.startswich(prefix[,])
24、
移除两段空白 Def strip(self,chars=None): s.strip([chars]) Def rstrip(self): s.rstrip()
25、
变成标题模式
Def title(self):
s.title() →string
26、
转换,需要先做一个对应表,最后一个表示删除的字符集合 Def translate(self,table,deketechars=None) s.translate(table [,deletechars]) →string
27、
Def zfill(self,width):
“””方法返回指定长度的字符串,元字符串右对齐,前面填充0”””
s.zfill(width)
这里和rjust差不多,但是rjust比这个方法要强大。
第三篇、内置方法