Python3基础知识点的讲解(四)

绪论

本篇文章既上篇文章之后为大家带来的是关于Python3中一些基础的知识点,通过上篇的学习,我们队Python3中的一些基本的语法有所了解和掌握。

** 主要内容的介绍**

  • 字典的介绍
  • 字典的运用
  • 元组的介绍
  • 元组的应用
  • 函数的介绍
  • 函数的应用

** 1、字典(dict)的介绍**

为什么会有字典类型的出现?我们都知道Python3是一门高级动态编程语言,对于高级语言设计来说,功能理应很多,为我们开发者减少更多的压力和负担,比如,现在我们需要去存储一个学员的相关信息,包括姓名、电话、QQ、家庭地址等等,那么利用我们以前学的知识,也可以做,比如,我们可以用列表去完成,通过列表进行存储,但是,这样在需要用的时候,取的时候只能根据下标去拿,很麻烦,所以Python3开发者为了更好的被别人所用,那么就出现了字典类型。

** 1.1字典定义格式**
例如: names = {'name':'laowang','age':26,'address':'chongqing'}
这就是定义了一个字典,格式:
变量名称(字典名称) = {key-value}
采用的是键值对的形式进行存储,通过键(key)去拿到值
比如: name = names['name'] 那么得到的结果就是 name = laowang
字典进行取出值的时候,和列表有点不同,是通过key进行找到value。
** 1.2字典的常见操作**
字典的元素增加:
例如:names = {}#这是定义了一个空的字典,


In [2]: names = {}
In [3]: print(names)
{}
In [4]: names['name'] = 'laowang'
In [5]: names
Out[5]: {'name': 'laowang'}
In [6]: names['age'] = 27
In [7]: print(names)
{'age': 27, 'name': 'laowang'}
In [8]: 

字典添加元素的时候,需要注意一点就是,如果字典里原来有key,那么在次添加时,会覆盖以前key所对应的值,
例如,把上面例程的names在次修改:

names['name'] = 'laozhao'
In [9]: names
Out[9]: {'age': 27, 'name': 'laozhao'}

可以看到names这个字典里的内容发生了改变
字典的查找元素
对应字典的查找元素,就是通过key来进行直接查找或者间接的查找get()
上示例代码:

图1

一般查询,我们还是利用get()这个函数,因为这个如果查找没有,程序是不会崩溃的。

字典元素的修改
对于字典元素的修改,这里就不说了,就是通过key进行重新赋值,上面添加元素的时候就展示了。
删除字典的元素
对于删除字典的元素,其实和列表删除元素类似,
语法就是 del 字典名[key] 得到的是一个新的字典。
还有删除也可以用pop()或者popitem(),这里就不演示了。

#字典元素的删除
In [18]: dict_name
Out[18]: {'age': 23, 'address': 'guizhou', 'name': 'laowang'}

In [19]: del dict_name['name']

In [20]: dict_name
Out[20]: {'age': 23, 'address': 'guizhou'}

In [21]: a = [11,22,44]
#列表的元素删除
In [22]: a
Out[22]: [11, 22, 44]

In [23]: del a[1]

In [24]: a
Out[24]: [11, 44]

2、字典的常见函数运用
len()
对于这个,我相信大家并不陌生,就是求元素的个数
例如: dict_a = {'key1':23,'key2':24,'key3':35}
len(dict_a) => 返回的是一个int类型的值,即字典里键值对的个数,2
keys()
得到的就是所有的键值对中的键的值,

In [49]: names = {'name':'laowang','age':23}
In [50]: names.keys()
Out[50]: dict_keys(['age', 'name'])

values()
得到的就是字典中所有的值。

In [51]: names
Out[51]: {'age': 23, 'name': 'laowang'}
In [52]: names.values()
Out[52]: dict_values([23, 'laowang'])

items
得到的是字典中所有的键值对


In [57]: names
Out[57]: {'age': 23, 'name': 'laowang'}

In [58]: names.items()
Out[58]: dict_items([('age', 23), ('name', 'laowang')])

当然,字典的操作还有很多,这里就不一一介绍了,学习的过程就是自己要去举一反三。
补充
以前,我们提过两种循环,其中有一种就是for循环,对于for循环,在这里做一个知识点的补充,就是for else 的用法,看示例代码

#coding=utf-8
a = [11,22,33,44]
for temp in a:
    print(temp)
else:
    print('====zhixing====')
    #执行的结果:
    11
    22
    33
    44
    ====zhixing====
    解释:就是在for循环执行后,这个else里的语句也要被执行,这个就是for   else 的联用,这个语法是在其他高级语法中没有的,
a = [11,22,33,44]
for temp in a:
    print(temp)
    break
else:
    print('====zhixing====')
    #执行结果:
    11
    解释:这是因为在for循环中,如果有break,那么else中的代码是永远也不执行的,当然实际运用需要结合自己的需求。

2、元组(Tuple)
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

    #定义一个元组
    names = (11,22,33,44)
    #访问元组里元素
    print(names[0])
    #输出的结果就是11,
    

元组的一些操作
元组的count和index内置函数

>>> a = ('a', 'b', 'c', 'a', 'b')
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>> a.index('a', 1, 4)
3
>>> a.count('b')#返回的是元组里有多少个这个元素
2
>>> a.count('d')
0

补充:字符串、列表、元组、字典一些共有的操作
1、运算符的操作
a、+
对于列表、元组、字符串相加,就相当于合并
[1,2]+[3,4] = [1,2,3,4]
b、也是对于列表、字符串、元组来讲
对于
就相当于复制
'hi'*4 = 'hihihihi'
c、in 元素是否存在
针对的是列表、元组、字符串、字典
比如:3 in [2,3,4,5] 返回值是True
d、not in 判断元素是否不存在
比如: 4 not in[1,2,3,5,6] 返回值是True

基础语法就讲这么多了,那么后面更高级的语法将会在后面的高级程序里讲解,


函数

函数就是把一些功能模块进行一个封装,让实现的功能进行独立,需要使用的时候进行函数的调用而已。在Python3中的函数其实和C语言中的函数都是差不多相同的,并没有什么区别。
1、无返回值,无参数

def test():
    print('This is test')
test()

声明函数用关键字 def ,其中test是函数的名称 ,()里面是没有参数的,上面的示例就是声明了一个无返回值、无参数的值。

2、无返回值、有参数

def test1(a,b):
    result = a + b
    print(result)
test1(11,22)
#打印结果为33

3、有返回值、无参数

def test2():
    return 20
result = test2()
print(result)
#输出结果为20

函数有返回值,就使用return 进行返回
4、有返回值、有参数

def test3(a , b):
    result = a * b
    sum_num = a + b
    return result,sum_num
result,sum_num = test3(11,10)
print(result)
print(sum_num)
#程序运行结果:110 21

这里程序返回值的时候,返回的是多个值,这个语法是在Python中独有的语法,其他高级语法是没有的,那么这里是返回的多个字,这些值是本质是通过一个元组进行存储的,当然,你可以打印看看就知道了。

函数应用的简单介绍

>>> def sum_num():
    i = 1
    sum = 0
    while i <= 100:
        sum +=i
        i+=1
    return sum

>>> res = sum_num()
>>> print(res)
5050

只有你想做的功能模块,都可以采用函数进行一个封装
补充:函数的参数问题
1、函数缺省参数

def printinfo( name, age = 35 ):
   # 打印任何传入的字符串
   print "Name: ", name
   print "Age ", age

# 调用printinfo函数
printinfo(name="miki" )
printinfo( age=9,name="miki" )
#程序输出的结果:
Name:  miki
Age  35
Name:  miki
Age  9

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。而函数默认值的参数必须跟在函数参数的最后面,举一个例子

>>> def printinfo(name, age=35, sex):
...     print name
...
  File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

2、不定长参数
有的时候可能需要一个已经声明的函数处理更多的参数时,那么这个函数在声明的时候就不能把参数进行写死了,所以就出现了不定长参数,对于不定长参数类的函数,格式:

def functionname([formal_args,] *args, **kwargs):
    "函数_文档字符串"
    function_suite
    return [expression]

说明一下:加了星号()的变量args会存放所有未命名的变量参数,args为元组;而加*的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。

In [1]: def fun(a,b,*args,**kwargs):
   ...:     print(a)
   ...:     print(b)
   ...:     print(args)
   ...:     print(kwargs)
   ...:     

In [2]: fun(11,22,33,44,55,i = 10,j = 20,k = 30)#注意传参的对应
11
22
(33, 44, 55)
{'i': 10, 'j': 20, 'k': 30}

In [3]: 

大家可以看到一个输出结果,当你传的参数是很长的一串的时候,那么在函数的形参中是怎么进行对应的呢,首先满足直接形参,a = 11,b = 22,然后剩下的未命名参数,就全部传给args,并且args是一个元组,同理而加的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
其实这个不难理解,大家有C语言的知识就应该明白,
args其实就是一个指针而已,这个指针指向的是元组的首地址而已,而
*kwargs他只不过这里他为了区分,是以字典的形式进行保留的。
那大家可能会问,这个东西怎么取出来呢?其实很简单的,元组和字典我们都可以采用遍历的。这里就展示了。
3、引用传参
在Python中并没有想C语言一样,有指针的形式传参,那么它是怎么做到想C语言那样的呢,那就是引用传参。
在说引用传参的时候,传递的参数,要分是可变类型和不可变类型,在Python中,不可变类型是字符串、数字、元组等,可变的类型有列表和字典。

>>> def selfAdd(a):
...     """自增"""
...     a += a
...
>>> a_int = 1
>>> a_int
1
>>> selfAdd(a_int)
>>> a_int
1
>>> a_list = [1, 2]
>>> a_list
[1, 2]
>>> selfAdd(a_list)
>>> a_list
[1, 2, 1, 2]

Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。

总结

在这里简单的介绍了python的相关语法,对于元组、列表、数组、函数都是需要大量的练习。后面讲讲解有关Python的文件操作。

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

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,785评论 17 410
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,673评论 1 10
  • 夏日炎炎,操场上的我们,奔跑着,欢笑着。
    浅夏四月阅读 134评论 1 2
  • 我把小猫的脸弄脏了,发现“第一排哥们”的脸好像呀! 昨天晚上正好画了一堆“猫”,体会了一下不同的表情!
    紫荆传芳阅读 120评论 1 2
  • 【写作成长计划】20【励志】最怕碌碌无为,却安慰自己平法可贵 之前刷屏的《你的同龄人正在抛弃你,摩拜创始人套现15...
    且听鹏吟阅读 74评论 0 0