传送门: Python入门案例第一天(Python基础语法上).
传送门: Python入门案例第二天(Python基础语法中).
【Python】Python入门案例第三天(Python基础语法下)
一、Python中的字符串
字符串是python中的基本数据类型,是一个不可变的字符序列
1.字符串的驻留机制
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。 字符串驻留机制的优缺点: 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。 在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符串中的长度,然后再拷贝,只new一次对象,效率要比“+”效率高。
a='Python'
b="Python"
c='''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
输出结果:
Python 2990483081904
Python 2990483081904
Python 2990483081904
2.字符串的相关操作
(1)字符串的查询操作:
s='hello,world'
print(s.index('lo'))
print(s.find('lo'))
print(s.rfind('lo'))
(2)字符串的大小写转换操作的方法
a=s.upper()
print(a,id(a))
print(s,id(s))
b=s.lower()
print(b,id(b))
print(s,id(s))
输出结果:
HELLO,WORLD 1906161060080
hello,world 1906160711280
hello,world 1906161060144
hello,world 1906160711280
(3)字符串内容对齐的操作
c='hello,Python'
print(c.center(20,'*'))
print(c.ljust(20,'*'))
print(c.rjust(20,'*'))
print(c)
输出结果:
****hello,Python****
hello,Python********
********hello,Python
hello,Python
(4)字符串分段操作
d='hello,Python'
lst=d.split()
print(lst)
d='hello|world|Python'
print(d.split(sep='|'))
print(d.split(sep='|',maxsplit=1))
print(d.rsplit())
print(d.rsplit("|"))
print(d.rsplit(sep='|',maxsplit=1))
输出结果:
['hello,Python']
['hello', 'world', 'Python']
['hello', 'world|Python']
['hello|world|Python']
['hello', 'world', 'Python']
['hello|world', 'Python']
3.字符串的替换与合并
s='hello,world'
print(s.replace('Python','Java'))
s2='hello,world,Python,Python'
print(s2.replace('Python','java',2))
lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))
t=('hello','java','python')
print(''.join(t))
print('*'.join('python'))
输出结果:
hello,world
hello,world,java,java
hello|java|python
hellojavapython
hellojavapython
p*y*t*h*o*n
4.字符串的切片操作
#字符串是不可变类型,不具备增删改等操作,切片操作将产生新的对象。 #切片[start🔚step]
s2='helloworld'
s5=s2[:5]
s3=s2[6:]
s4='!'
newstr=s5+s3+s4
print(s5)
print(s3)
print(s4)
print(newstr)
print(s2[1:5:1])
输出结果:
hello
orld
!
helloorld!
ello
5.字符串的比较操作
(1)运算符:>,>=,<,<=,==,!= (2)比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中所有后续字符将不再被比较。 (3)比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的原始值,与内置函数ord对应的是内置函数chr,调用内置函数chr时,指定ordinal value可以得到其对应的字符。
s='hello'
s1='helloworld'
print(s>s1)
print(s<s1)
==与is的区别 ==比较的是value is比较的是id是否相等
a=b='python'
c='python'
print(a==b==c)
print(a is b)
print(a is c)
6.格式化字符串的3种方式
(1)%作占位符:%s-字符串,%i或%d-整数,%f-浮点数
name='安逸'
age=18
print('我的名字叫:%s,今年%d岁'%(name,age))
输出结果:
我的名字叫:安逸,今年18岁
(2){}作占位符:‘我的名字叫:{0},今年{1}岁’.format(name,age)
print('我的名字叫:{0},今年{1}岁'.format(name,age))
输出结果:
我的名字叫:安逸,今年18岁
(3)#f-string
print(f'我的名字叫:{name},今年{age}岁')
输出结果:
我的名字叫:安逸,今年18岁
print('%10d' %99)
print('%.3f'%3.1415926)
print('%10.3f'%3.1415926)
7.字符串的编码转换
#str在内存中以Unicode表示 #编码与解码的方式 #编码:将字符串转换成二进制数据(bytes) #解码:将bytes类型的数据转换成字符串类型
s='努力赚钱'
print(s.encode(encoding='GBK'))
print(s.encode(encoding='UTF-8'))
byte=s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))
输出结果:
b'\xc5\xac\xc1\xa6\xd7\xac\xc7\xae'
b'\xe5\x8a\xaa\xe5\x8a\x9b\xe8\xb5\x9a\xe9\x92\xb1'
努力赚钱
二、python中的函数
1.函数的创建和调用
#什么是函数:函数就是执行特定任务和以完成特定功能的一段代码 #函数的作用:复用代码;隐藏实现细节;提高可维护性;提高可读性便于调试 (1)函数的创建:
def calc(a,b):
c=a+b
return c
print(calc(1,2))
(2)函数参数的传递: a,b称为形式参数,简称形参,形参的位置是在函数定义处 1,2称为实际参数,简称实参,实参的位置是在函数调用处. (3)函数的返回值: 1)如果函数没有返回值[函数执行完毕之后,不需要给调用处提供数据],return可以省略不写 2)函数的返回值,如果是1个,直接返回原类型 3)函数返回多个值时,结果为元组 (4)函数的参数定义: #函数定义默认值参数:函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参。 1)个数可变的位置参数:(只能一个) 定义函数的时候,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数可以解决 使用*定义个数可变的位置形参 结果为一个元组
def fun(*args):
print(args)
fun(10)
fun(10,20,30)
输出结果:
(10,)
(10, 20, 30)
2)个数可变的关键字形参:(只能一个) 定义函数的时候,可能无法事先确定传递的关键字实参的个数时,使用可变的关键字形参可以解决 使用**定义个数可变的关键字形参 结果为一个字典
def fun2(**args):
print(args)
fun2(a=10)
fun2(a=10,b=20)
输出结果:
{'a': 10}
{'a': 10, 'b': 20}
2.变量的作用域
程序代码能访问该变量的区域 根据变量的有效范围可分为: 局部变量:在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量就会成为局部变量。 全局变量:函数体外定义的变量,可作用于函数内外。
3.递归函数:
什么是递归函数:如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数 递归的组成部分:递归调用与递归终止条件。 递归的调用过程:每递归调用一次函数,都会在栈内存分配一个栈帧,每执行完一次函数,都会释放相应的空间。 递归的优缺点:缺点:占用内存多,效率低。 优点:思路和代码简单。
def fun(n):
if(n==1):
return 1
else:
return n*fun(n-1)
print(fun(6))
若本篇内容对您有所帮助,请三连点赞,关注,收藏支持下。
创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
安逸 | 文
如果本篇博客有任何错误,请批评指教,不胜感激 !
|