学习笔记4-python字符串补充及函数传参(部分面试题)

1. [x for x in range(5)](x for x in range(5))有什么区别?

print([x for x in range(5)])
print((x for x in range(5)))

运行结果:

[0, 1, 2, 3, 4]
<generator object <genexpr> at 0x0000019A55ED9DD0>

一个生成列表,一个生成迭代器对象
迭代器一定是可迭代对象,但是可迭代对象不一定是迭代器

2. 字符串系统功能

2.1 简述列表,元组,字典,集合和字符串的区别?

列表的本质:list,是一种有序的,可变的,可以存储重复元素的,可以存储不同类型的集合;

  • 元组的本质:tuple,是一种有序的,不可变的,可以存储重复元素的,可以存储不同类型的集合;
  • 字典的本质:dict,是一种有序的【Python3.7之后】,可变的,key不可以重复,但是value可以重复,key只能是不可变的数据类型,value可以是任意的类型的集合;
  • 集合的本质:set,是一种无序的,可变的,不可以存储重复元素的,可以存储不同类型的集合;
  • 字符串的本质:str,是一种有序的,不可变的,可以存储重复字符的集合。
比较项列表元组字典集合字符串
是否可变可变不可变可变可变不可变
是否有序有序有序python3.7之前:无序,python3.7之后有序无序有序
存储重复元素可以可以key:不可以重复,value可以重复不可以可以
数据类型任意类型任意类型key:不可变的数据类型,value:任意类型任意类型-------------

2.2 转义字符

"""
n ----->\n  换行
t ----->\t  制表符【tab键】
r ------>\r  回车
b ------>\b  backsapce
"""
  • 注意:r"xxx",可以将字符串中的特殊字符进行转义,无需手动转义,常用于路径的表示或者正则表达式中

2.3 系统功能

2.3.1 转换

eval():将str转换为有效的表达式,eval(str):可以识别一个字符串str中的有效的python语句并执行该语句
upper():将小写字母转换为大写
lower():大—》小
swapcase():大—》小 小----》大
capitalize():首单词的首字母大写,其他全部小写,英文句子
title():每个单词的首字母大写,其他全部小写
chr(num):获取数字num在ASCII表中对应的字符
ord(ch):获取字符ch在ASCII表中对应的十进制数字

2.3.2 查找

find():从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到返回-1;
rfind():从右往左进行检索;
index():从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到则直接报错;
rindex():从右往左进行检索。

2.3.3 填充

center(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居中显示;
ljust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居左显示;
rjust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居右显示;
zfill(width):原字符串居右显示,剩余的字符默认用0填充

2.3.4 提取

strip():去除一个指定字符串中两端指定的子字符;
lstrip():去除一个指定字符串中左边指定的子字符
rstrip():去除一个指定字符串中右边指定的子字符

2.3.5 合并和分割

join():使用指定的子字符串将列表中的元素连接【列表-----》字符串】
split():使用指定的子字符串将原字符串进行分割,得到一个列表 【字符串-----》列表】

2.3.6 替换

replace(old,new):将原字符串中的old替换为new
映射替换:
maketrans():生成映射表
translate():根据映射表将指定字符串中的指定字符替换为映射表中对应的字符

3.7判断

isalpha():一个字符串非空并字符全部是字母才返回True
isalnum():一个字符串非空并字符是字母或者数字才返回True
isupper()/islower()/istitle():和upper,lower,title有关
isdigit()/isdecimal():一个字符串非空并字符全部是数字才返回True
startswith():判断一个字符串是否是以指定自字符串开头【前缀】
endswith():判断一个字符串是否是以指定自字符串结尾【后缀】

2.3.8 编码和解码

encode():编码:将字符串类型转换为字节类型,实现方式:bytes()或encode()
decode():解码:将字节类型转换为字符串类型,实现方式:str()或decode()

2.3.9 格式化

占位符:%d,%s,%f
format()
f""

3. 参数传递

3.1简述值传递和引用传递的区别

  • 值传递:传参的时候,传递的是不可变的数据类型,如:int/float/str/tuple/bool,当形参发生修改,对实参没有影响;
  • 引用传递:传参的时候,传递的是可变的数据类型,如:list/dict/set等,当形参中的元素发生修改,则实参会随着修改。
# 1.值传递
def func1(num):
 print(f"修改之前,num的地址:{id(num)}")
 num = 100
 print(f"修改之后,num的地址:{id(num)}~~~~")

temp = 45
func1(temp)
print(f"temp的值:{temp}")

# 2.引用传递
def func1(num):
 print(f"修改之前,num的地址:{id(num)}")
 num[1] = 100
 print(f"修改之后,num的地址:{id(num)}~~~~")

temp = [2,3,4]
func1(temp)
print(f"temp的值:{temp}")

3.2 return

  • return是一个关键字,可以单独作为一条语句,只能使用在函数中,表示结束函数
  • 同级的情况,在return的后面不添加任何语句,否则永远没有执行的机会
  • 不同级的情况下,只要return有可能执行不到,return的后面是可以添加语句的
  • 如果函数没有设置返回值,则函数调用完毕之后,默认返回None
  • 函数调用完毕之后,可以使用一个变量将返回值接出来

3.3 return和break

  • return:使用在函数中,表示结束函数,不管return处于多少层循环中,只要执行到return,函数都会结束;
  • break:使用在循环中,表示结束当前循环;

4. 函数的封装

def xxx(形参):
 函数体【要实现的需求】
 return 返回值
  • 如果要封装一个函数,需要注意两个方面:
    • 是否需要设置形参:如果需求中有未知项参与运算,则设置为形参
    • 是否需要设置返回值:如果需求运算完是否有结果,如果有结果,则设置返回值

5. 匿名函数

  • 概念:不再使用def这种标准形式定义函数,而是使用lambda表达式来创建函数,该函数没有函数名,被称为匿名函数,匿名函数也被称为lambda表达式

  • 语法:lambda 形参列表:返回值

  • 说明:
    ​ a. lambda只是一个表达式,用一行代码实现一个简单的逻辑,可以达到对函数的简化【优点】
    ​ b. lambda主体是一个表达式,而不是一个代码块,只能封装有限的逻辑【缺点】
    ​ c. lambda拥有自己的命名空间,不能访问自有列表之外或者全局命名空间里的参数

6. 函数/方法

  • 在一个完整的项目中,某些功能可能会被反复使用,如果将反复出现的代码封装成函数,以后如果要继续使用该功能则直接使用函数即可,另外,如果要修改需求,只需要修改函数
  • 本质:对某些特殊功能的封装
  • 优点:
    a.简化代码结构,提高应用的模块性
    b.提高了代码的复用性
    c.提高了代码维护性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年中初界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值