Python学习(二)

字典(Dictionary)

  • 字典的定义
dictionary_name = {key_1: value_1,
                   key_2: value_2
                   }
  • 字典的输出
    代码中字典中的前一项叫name,后一项叫meaning,其实叫什么都可以
    一般循环输出比较方便,下面是几种输出方式,都可以。
for name, meaning in python_words.items():
    print("\n名称: %s" % name)
    print("解释: %s" % meaning)

for word in python_words:
    print("%s" % word)

for word in python_words.keys():
    print(word)

for meaning in python_words.values():
     print("值: %s" % meaning)

for word in sorted(python_words.keys()):
    print("%s: %s" % (word, python_words[word]))

  • 常用操作
操作 实现
加入新的键-值对 字典名[键名] = 值
修改字典中的值 字典名[键名] = 新值
删除字典中的项 字典名.pop('项名')
修改键名 创建一个新键 ,将要更换键名的值赋给新键
  • 嵌套:嵌套包括把列表或字典放在另一个列表或字典中。
    值为列表的字典:通过 字典名[词条名][词条内位置] 访问
    值为字典的字典:通过 字典名[词条名][词条内属性名] 访问

函数(Functions)

  • 定义一个函数
    使用关键字 def 告诉 Python 你将要定义一个函数。
    确保函数的定义以冒号结束。
  • 使用一个函数
    返回值
    参数缺省值位置参数混合位置和关键字参数(部分参数赋初值,应该把有默认值的形参放在没有默认值的形参的后面)和c++差不多,就不再总结了
    关键字参数不太一样,只要指出参数名字,调用传参时不再严格受到位置的限制
    接受任意长度的序列:

它提供了一种语法,可以让函数接受任意数量的参数。如果我们在参数列表的最后一个参数前加一个星号,这个参数就会收集调用语句的剩余参数并传入一个元组。
如果函数中既有不定长参数又有普通参数,那么不定长参数必须放在普通参数的后边

def example_function(arg_1, arg_2, *arg_3):
    # Let's look at the argument values.
    print('\narg_1:', arg_1)
    print('arg_2:', arg_2)
    print('arg_3:', arg_3)
    
example_function(1, 2)
example_function(1, 2, 3)
example_function(1, 2, 3, 4)
example_function(1, 2, 3, 4, 5)

接受任意数量的关键字参数

在参数名前加两个*, 会将这个参数变成一个字典来获取关键字参数的值,其他关键字作为key,实参作为value

def example_function(**kwargs):
    print(type(kwargs))
    for key, value in kwargs.items():
        print('{}:{}'.format(key, value))
        
example_function(first=1, second=2, third=3)
example_function(first=1, second=2, third=3, fourth=4)
example_function(name='Valerio', surname='Maggio')
  • 如果我们在参数列表的最后一个参数前加一个星号,这个参数就会收集调用语句的剩余参数并传入一个元组
  • 如果一个参数前有两个星号,代表着收集调用语句中剩余的所有键值对参数。这个参数常被命名为 kwargs 。这些参数键值对被存储在一个字典中。
    两个的参数要放在一个的后边

类(Classes)

  • 定义:类是一种组合信息和行为的方式
class Rocket():
    
    def __init__(self):
        #在类中要做的第一件事就是定义 __init__ 函数。当对象被创建时,__init__ 函数就会执行,为需要的参数设置初始值。
        # Each rocket has an (x, y) position
        self.x = 0
        self.y = 0

使用对象名和点符号来访问对象的变量和方法

  • 面向对象基础

常用术语 意义
attribute:属性 是一系列信息的集合。在类中,一个属性通常是一个变量。
behavior:行为 是定义在类中,组成方法的部分。即定义在类中函数的一部分
method:方法 类中的函数,由 behavior 组成
object:对象 类的实例
  • _ init_() 方法:初始化函数
    类名必须是驼峰式的。也即每个单词的开头必须是大写的,不允许下划线的出现。
    目前为止圆括号里都是空的
    "self" 指向当前的对象,基本上,类中所有的函数都需要 self 对象作为第一个参数,因此它们就可以访问类中的属性。可以在其中添加关键字参数,更改对象的初始位置

  • 继承

新类可以重写覆盖任一继承自旧类的属性或行为。也可以添加新的属性和行为。旧类被称为父类,新类被称为父类的孩子。父类也被称为 superclass ,子类被称为 subclass。

  • 当一个子类要继承父类时,在定义子类的圆括号中填写父类的类名:
  • 新类的 init() 函数接受的参数需要传递给父类的 init() 函数。由 super().init() 函数负责:

模块(Modules)和类

越长的程序越变得难以阅读和维护。Python 允许将类放进另一个文件中然后在你的程序中导入。这样就将类和程序隔离,也就能在不同的程序中运用。随着使用次数的增多,类也会变得越来越可靠和完善。

  • 在模块中存储一个类
    模块的名字是小写的单词,类名是以大写字母开头的。
    创建一个单独的 .py 文件。确保使用约定的命名方式,小写字母加下划线的方式为文件命名
from rocket import Rocket #导入一个类#
from module_name import ClassName #导入多个类#

  • 导入模块和类的一些方法

1.都导入最常见

from module_name import ClassName

2.只导入模块

import module_name

3.在你的项目中导入模块时,你可以为模块自定义名字。

import module_name as local_module_name

4.导入模块中的所有类和函数:尽量避免使用因为导入的太多了

from module_name import *
  • 函数模块

导入方法与上相同


异常(Exceptions)

  • 异常是可以修改程序控制流程的事件。
  • 菜鸟教程的讲解还比较详细
  • 这个的讲解就比较生动有趣
  • 4种处理异常的语句
语句 作用
try/except 捕捉并恢复 Python 自动触发的或自己代码中的异常
try/finally 无论异常是否发生,执行清理操作
raise 手动触发一个异常
with/as 在 Python 2.6 ,3.0 或更新的版本中实现上下文管理器。

1.try/except

try:
<语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

2.try/finally

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

3.raise

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

4.with/as

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

推荐阅读更多精彩内容