python学习日记1-基础语法

1.python 对象属性打印

vars(obj) 与dir(dir), 区别如下:dir()函数或vars()函数来查看对象的属性。其中,dir()函数返回一个属性列表,包含特殊属性和我们定义的属性,而vars()函数仅返回我们定义的属性。在使用这些函数时,我们应该注意对象是否已经实例化,以及特殊属性和我们定义的属性之间的区别

python内置函数

+++++++++++++++++++++++++++++++++++++++

1. dir() :列出对象的属性和方法

在不提供参数时返回当前作用域内的变量、方法和模块名。主要用于查看对象的属性和方法

# 对象 obj 的属性和方法列表
print(dir(obj))

2. help() :用于获取对象、函数、模块等的帮助信息

它能够提供关于对象的文档字符串(docstring)以及如何使用该对象的信息。获取有关对象的更详细的文档和使用说明

# 获取帮助信息
help(obj)
# 或者
help(list)  # 获取列表类型的帮助信息
3. filter() :用于过滤序列(例如列表、元组等)中的元素,根据指定的函数条件来筛选元素
  • 语法格式为 filter(function, iterable),
  • function 是一个用于筛选的函数,它会对序列中的每个元素进行评估。这个函数返回 True 或 False,True 表示保留该元素,False 表示移除该元素。
  • iterable 是一个可迭代对象,例如列表、元组等
  • filter() 函数返回一个迭代器,其中包含通过指定函数筛选保留下来的元素。如果需要得到一个列表,可以将迭代器转换为列表:
result = filter(function, iterable)
filtered_list = list(result)

demo如下:

#在这个例子中,filter() 函数使用 is_even() 函数来筛选出 my_list 中的所有偶数,最后得到一个包含偶数的新列表。
 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def is_even(x):
    return x % 2 == 0

result = filter(is_even, my_list)
filtered_list = list(result)
print(filtered_list)  # 输出结果为 [2, 4, 6, 8, 10]


4. lambda创建匿名函数的关键字
  • 它可以在需要函数对象的任何地方定义小型、一次性的函数,而不必显式地使用 def 定义函数。lambda 函数通常是简单的、单行的,并且在使用时非常方便。
  • 基本的 lambda 表达式语法是:
    a > lambda 后面是函数的参数(可以有多个参数,用逗号分隔)。
    b > 冒号后是返回值,通常是一个表达式,而不是语句。
# 参数:表达式
lambda arguments: expression

  • lambda 函数通常与内置函数(如 map()、filter()、sorted() 等)一起使用。它们可以在不定义命名函数的情况下方便地传递简单的功能
    例如,在使用 map() 函数时,结合 lambda 可以将某个操作应用于列表中的每个元素:
my_list = [1, 2, 3, 4, 5]
# 使用 lambda 和 map 对列表中的每个元素进行平方操作
squared = list(map(lambda x: x ** 2, my_list))
print(squared)  # 输出结果为 [1, 4, 9, 16, 25]

  • lambda 的使用技巧包括:

a > 简洁性:适用于简单函数,避免定义额外的命名函数。
b > 函数式编程:在函数式编程中,lambda 可以用于创建匿名函数,与 map()、filter() 等高阶函数配合使用。
c > 作为参数传递:在需要函数对象作为参数的情况下,lambda 是传递简短功能的理想选择。

然而,对于复杂的逻辑或长代码,最好使用 def 来定义函数,因为它更易读、更易维护。lambda 更适合用于简单的、仅需短期使用的函数。

5. raise:手动触发异常的关键字

当程序出现特定错误条件或需要发出特定信号时,可以使用 raise 来抛出异常

#raise 的基本语法是:
raise [Exception]

# 抛出指定异常
raise ValueError("This is a value error")


try:
    # 某些代码可能会引发异常
    pass
except SomeException as e:
    # 处理异常
    pass
    # 重新抛出当前异常
    raise
#在 except 块中,如果想要在处理异常后将异常继续传播,可以使用 raise 语句来重新抛出当前异常。这样可以让上层代码继续处理异常情况。

6. assert 是 Python 中的关键字,用于在代码中进行断言(assertion)。它用于检查代码的假设是否为真,如果断言失败,则会引发 AssertionError 异常。

x = 10
# 如果条件为 False,则抛出 AssertionError 异常,并显示错误信息
assert x == 10, "x should be equal to 10"

在这个例子中,assert 语句检查变量 x 是否等于 10。如果条件为 False,则会抛出 AssertionError 异常,并显示指定的错误信息。如果条件为 True,则程序将继续执行。

作用:
  • 调试和测试:在开发过程中,可以使用 assert 来验证代码的正确性,确保假设条件得到满足。它可以帮助发现潜在的错误。
  • 防御性编程:用于捕获在程序中可能出现的错误,帮助开发者及早发现问题。

但需要注意的是,默认情况下,Python 解释器在发布(发布版、生产环境)时会忽略 assert 语句。因此,assert 应该主要用于开发和测试阶段,在生产环境中可以通过 -O 参数禁用 assert 语句。

python -O your_script.py
在这种情况下,Python 将忽略所有 assert 语句,不会进行断言检查。因此,在生产环境中不建议过度依赖 assert 语句来处理异常或错误条件。

str 字符串及其属性和方法

+++++++++++++++++++++++++++++++++++++++

Python 的字符串类型(str)有很多内置方法,用于执行各种字符串操作

1. 转换方法:

upper():将字符串中的所有字母转换为大写。
lower():将字符串中的所有字母转换为小写。
capitalize():将字符串的首字母大写。
title():将字符串中每个单词的首字母大写。

2.查找和替换方法:

find(substring):查找子字符串在字符串中的位置,如果不存在返回 -1。
replace(old, new):将字符串中的旧子串替换为新子串。
count(substring):计算子字符串在字符串中出现的次数。

3.判断方法:

isalpha():检查字符串是否只包含字母。
isdigit():检查字符串是否只包含数字。
startswith(prefix):检查字符串是否以指定的前缀开始。
endswith(suffix):检查字符串是否以指定的后缀结束。

4.处理空白字符:

strip():去除字符串两侧的空白字符。
lstrip():去除字符串左侧的空白字符。
rstrip():去除字符串右侧的空白字符。

5.分割和连接方法:

split(separator):使用指定的分隔符将字符串拆分成子字符串列表。
join(iterable):将可迭代对象中的字符串连接成一个字符串,使用调用它的字符串作为分隔符。

6.格式化方法:

format():使用指定的参数将字符串格式化。

7.其他方法:

len():返回字符串的长度。
index(substring):查找子字符串在字符串中的位置,如果不存在则引发异常。

list列表

+++++++++++++++++++++++++++++++++++++++

列表操作包含以下函数:
  1. cmp(list1,list2): 比较两个列表的元素
  2. len(list) : 列表元素个数
  3. max(list) : 返回列表元素的最大值
  4. min(list) : 返回列表元素的最小值
  5. list(seq) : 将元组转换为列表
  6. in 和 not in 检索列表中是否存在某个元素
  7. + 和 * 拼接列表和制定重复次数
列表操作包含以下方法:
  1. list.append(obj) : 在列表末尾添加新的对象
  2. list.count(obj) : 列表中某个元素出现的次数
  3. list.extend(seq) : 在列表末尾追加另外一个序列(用新的列表扩展原列表)
  4. list.index(obj) : 列表中某个元素的索引值
  5. list.insert(index,obj) : 插入元素
  6. list.pop(index,obj) : 删除元素(默认最后一个元素
    list.pop(3) 删除列表中的第3个元素
    del list[3] 删除列表中的第3个元素(删除列表的第几个元素)
    list.remove(obj) : 删除列表中指定元素的第一个匹配项
  7. list.reverse(obj) : 反向排序
  8. list.sort([func]) : 排序
遍历和切片
  1. for 变量 in 序列
  2. 切片:list_name[strat : end : step] 和 range(start,stop[,step])

元组

+++++++++++++++++++++++++++++++++++++++

1. 概念:

元组 tuple就是不可变的序列,在属性,方法上基本和list一样。

2. 元组的解包:将元组中的数据赋值给变量。
#定义元组
my_tuple = 10,20,30,40

#元组的解包
a,b,c,d = my_tuple
print(a,b,c,d)
# 输出为 :10 20 30 40

#元组 部分解包
a,b,*c = my_tuple
print(a,b,c)
#输出为 : 10 20 [30, 40]

字典

+++++++++++++++++++++++++++++++++++++++

  1. 概念:
    字典:数据结构,映射(mapping)。与列表相似,与列表的区别在于,列表存储数据性能比较好,查询数据性能较差。字典恰恰与之相反。字典是以健值对的方式出现(key-value),语法:{key:value,key:value....}

  2. in 和not in 字典内是否包含某个健

  3. dict['key'] == dict.get('key')

  4. dict.setdefault(key,value) 设置默认值

  5. d1.update(d2) 把d2添加到d1中

  6. del dict[key] 删除
    dict.popitem() 随机删除一个键值
    dict.pop(key,'默认值') 删除指定键值,如果键不存在,返回默认值

  7. dict.clear() 清空字典

  8. dict.keys() 字典中的所有键
    dict.values() 字典中的所有值
    dict.items(). 包含字典中的所有键和值

 for k,v in dict.items():
    print(k,v)

集合 set

+++++++++++++++++++++++++++++++++++++++

  1. 与列表相似,只能存储不可变的,无序的,不重复的元素
set1 = {1,2,3} # 写法上类似于字典,但是没有键值的关系

  1. add(elm) 向集合中添加
  2. s1.update(s2) 向集合中添加集合
  3. s1.pop()
    s1.remove()
    s1.clear()
  4. r = s1 & s2 交集运算
    r = s1 | s2 并集运算
    r = s1 - s2 并集运算
    r = s1 ^ s2 异或集运算(集合中不相交的元素)
  5. a <= b a 是b的子集,b 是a 的超集
    a < b a 是b的真子集,,b 是a 的真超集
    7.集合的使用

字符串 str

+++++++++++++++++++++++++++++++++++++++

1.字符串定义
#单行字符串
str1 = 'abc'

#多行字符串
str1 = '''
第一行 hello world
第二行 世界你好
第三行 这是我的世界
'''
  1. 转义字符 \
  2. 字符拼接 str3 = str1 + str2
  3. 字符重复操作符() str3 = str12
  4. 索引 str1[0]
  5. 切片 str1[start:end:step]
  6. 步长为负数时为逆向检索,如:str1[::-1]
  7. 格式化字符串
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容