Python全栈开发day4
1、python三元运算
实现方法:
result = 值1 if 条件 else 值2
例如:
1
2
3
4
|
#!/bin/env python #-*- coding:utf-8 -*- name = 'sam' if 2 > 3 else 'shaw' print (name) |
2、集合
集合是一个无序并且不重复的元素的集合,基本功能包括:关系测试和消除重复元素(去重)
2.1 集合的定义:
1
2
3
4
5
6
7
8
|
#!/bin/env python #-*- coding:utf-8 -*- basket = { 'apple' , 'orange' , 'apple' , 'pear' } # 或者 name = set ( 'sam' ,) print (basket,name) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py { 'pear' , 'apple' , 'orange' } { 'a' , 's' , 'm' } |
2.2 集合方法总结
http://www.cnblogs.com/opsedu/p/5546559.html
3、拷贝
3.1 数字和字符串
对于字符串和数字来说,对其的赋值,浅拷贝和深拷贝操作,操作后的值都一样,因为他们都指向同一个内存地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/bin/env python #-*- coding:utf-8 -*- import copy a = 'shaw' m = a # 赋值 a2 = copy.copy(a) # 浅拷贝 a3 = copy.deepcopy(a) # 深拷贝 print ( id (a), id (m), id (a2), id (a3)) # 查看各变量内存地址 C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 17386440 17386440 17386440 17386440 # # # b = 68 n = b # 赋值(其他同上) b2 = copy.copy(b) b3 = copy.deepcopy(b) print ( id (b), id (n), id (b2), id (b3)) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 1363081104 1363081104 1363081104 1363081104 |
3.2 其他数据类型
对于字典、元祖、列表而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
a. 赋值(只是创建了一个变量,该变量指向了原来的内存地址)
1
2
3
4
5
6
7
8
|
#!/bin/env python #-*- coding:utf-8 -*- import copy info = { 'k1' : 'shaw' , 'k2' : 'sam' , 'k3' :[ 'shaw' , 24 ]} info2 = info print ( id (info), id (info2)) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 6817416 6817416 |
b. 浅拷贝(在内存中,仅仅另创建了第一层数据,即仅仅另copy了一份最外层的数据)
1
2
3
4
5
6
7
8
9
10
|
#!/bin/env python #-*- coding:utf-8 -*- import copy info = { 'k1' : 'shaw' , 'k2' : 'sam' , 'k3' :[ 'shaw' , 12345 ]} info2 = copy.copy(info) print ( id (info), id (info2)) print ( id (info.get( 'k1' )), id (info2.get( 'k1' ))) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 17237640 17728648 17667160 17667160 # 第二层内存指向同一个地址,表示第二层并没有复制 |
c. 深拷贝(在内存中将所有数据重新创建了一份。除了最里面一层,由' '决定的)
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/env python #-*- coding:utf-8 -*- import copy info = { 'k1' : 'shaw' , 'k2' : 'sam' , 'k3' :[{ 'shaw' : 24 }, 12345 ]} info2 = copy.deepcopy(info) print ( id (info), id (info2)) print ( id (info.get( 'k3' )[ 0 ]), id (info2.get( 'k3' )[ 0 ])) print ( id (info.get( 'k3' )[ 1 ]), id (info2.get( 'k3' )[ 1 ])) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 5310216 11913608 5310088 12344584 4673488 4673488 # 最里面一层内存地址相同 |
注意:
python中str和int不能被修改,想要修改,只能再创建
python内部对字符串和数字的优化:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/env python #-*- coding:utf-8 -*- import copy a = 298 b = 298 print ( id (a), id (b)) # # # c = 'shaw_wang' d = 'shaw_wang' print ( id (c), id (d)) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py 3362768 3362768 # 相同的内容,只创建一份,指向同一个地址 4600496 4600496 #相同的内容,只创建一份,指向同一个地址 |
4、函数
4.1 函数式编程最重要的是增强代码的重用性和可读性
4.2 定义/使用函数
def 函数名(参数):
函数体
返回值
函数定义要点:
def:表示函数关键字
函数名:函数的名称,函数的调用根据函数名
函数体:函数中的逻辑计算等
返回值:函数执行完毕后,可以给调用者返回数据
4.3 返回值
默认返回None
当函数执行到返回值时,函数将终止,返回值以后的代码不执行
4.4 参数
a. 普通参数
包括形式参数和实际参数
参数一一对应
1
2
3
4
5
6
7
8
|
#!/bin/env python # -*- coding:utf-8 -*- def shaw(msg): # msg为形式参数 if msg = = 'sam' : print ( '男神' ) else : print ( '傻帽' ) shaw( 'sam' ) # sam为实际参数 |
b. 默认参数(放在参数的最后)
1
2
3
4
5
6
7
8
9
|
#!/bin/env python # -*- coding:utf-8 -*- def shaw(msg,age = 24 ): # 在定义参数是,可以给参数定义值,叫默认参数 if msg = = 'sam' : print ( '男神,%s' % age) else : print ( '傻帽' ) shaw( 'sam' , 18 ) # 调用时,也可以指定参数 shaw( 'sam' ) # 使用默认参数age=24 |
c. 动态参数
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/env python # -*- coding:utf-8 -*- def func( * b): print (b) func( 1 , 2 , 3 ) # 第一种执行方式 a = [ 44 , 55 , 66 ] # 第二种执行方式 func(a) func( * a) C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py ( 1 , 2 , 3 ) ([ 44 , 55 , 66 ],) # 不加*,是把a看作为一个整体作为函数的一个参数 ( 44 , 55 , 66 ) # 加*,是循环a中的每个元素,作为函数的参数 |
d. 动态参数
1
2
3
4
5
6
7
8
9
10
|
#!/bin/env python # -*- coding:utf-8 -*- def func( * * b): print (b) func(name = 'shaw' ,age = 24 ) # 执行方式一 info = { 'name' : 'shaw' , 'age' : 24 } func( * * info) # 执行方式二 C:\Python35\python.exe F: / PyCharm / Python / PY_learn / lianxi.py { 'age' : 24 , 'name' : 'shaw' } { 'age' : 24 , 'name' : 'shaw' } |
4.5 函数传参
函数在传递参数时,传的是引用
4.6 变量
局部变量
在函数体区块内定义的变量,仅在当前函数中生效
全局变量
在函数体外定义的变量,在所有函数中都生效
例如:
1
2
3
4
5
6
7
8
9
10
|
#!/bin/env python # -*- coding:utf-8 -*- name = ( 'shaw' ) # 全局变量 def func( * args): name = ( 'sam' ) # 局部变量 if 2 > 1 : print (name,args) else : print ( 'haha' ) func( 24 ) |
Python全栈开发day4的更多相关文章
- python全栈开发-Day4 列表
python全栈开发-Day4 列表 一.首先按照以下几个点展开列表的学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Python全栈开发【基础一】
Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
随机推荐
- 代码安装apk文件
Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(file); in ...
- 防止在iOS设备中的Safari将数字识别为电话号码
在测试中发现iPad上的Safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出菜单添加到通讯录. 别的地方倒也罢了,如果在用户名中出现数字(手机注册新浪微博的话用户名就是“手机用户xxx ...
- c# MessageBox 用法大全
我们在程序中经常会用到MessageBox. 1.MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. 2.MessageBox.Show(&qu ...
- JS 继承总结
ES里面没有真正的继承,但是能通过某些手段达到继承效果,从而让一个类拥有另外一个类的方法 类 =>构造函数 继承描述某语言环境---魔兽世界 哈!其实我没玩过 魔兽世界里面 有Humen类 ...
- RMQ 训练 之 codevs 1690 开关灯 已经搞定
思路 懒标记法 记stop[rt] 表示 rt这个线段树节点的下方儿子们需要被更新几次 记住是下方 量纲不要乱 否则写的一堆渣代码 我的代码里面black是维护黑灯的数量 其实做烦了 如果是维 ...
- stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)
I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity).定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等. 编辑距离就 ...
- ADXL3xx: 读取 ADXL3xx 加速度传感器
原文链接:https://www.arduino.cc/en/Tutorial/ADXL3xx ADXL3xx加速度传感器 本教程将为你展示如何读取Analog Devices的ADXL3xx系列加速 ...
- 转ASP.NET1.1请求队列限制
在教务web的选课的维护中,经常面临asp.net1.1报错,在客户端跳转到用户自定义页面,在服务器端可以看到如下错误信息: “/”应用程序中的服务器错误. 服务器太忙 说明: 执行当前 Web 请求 ...
- Maven如何添加Oracle驱动包到本地仓库中
2016-05-28 http://note.youdao.com/yws/public/redirect/share?id=54cbe79c8948113ef492f946f7e027c8& ...
- Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究
本期内容 : ReceiverTracker的架构设计 消息循环系统 ReceiverTracker具体实现 一. ReceiverTracker的架构设计 1. ReceiverTracker可以以 ...