1python三元运算

实现方法:

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的更多相关文章

  1. python全栈开发-Day4 列表

    python全栈开发-Day4 列表 一.首先按照以下几个点展开列表的学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 ...

  2. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  3. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  4. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  5. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  6. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

  7. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  8. Python全栈开发【基础一】

    Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

随机推荐

  1. flddler使用方法

    http://blog.csdn.net/geekgjie/article/details/8029936

  2. navicat 连接 oracle

    环境:windows2008r2(x64) oracle 11.2.0.1 1.找到Oracle服务端的NetManager程序(一般在开始菜单->oracle->配置和移植工具)中,修改 ...

  3. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  4. C# char 和string之间转换

    har数组要转换成string可没想象的那么容易.需要使用到System.Text.StringBuilder!实例如下: char[] temp={a,b,c};System.Text.String ...

  5. java删除文件

    public boolean deleteFile(String fileName) { File file = new File("D:/NovaPluto/xml/"+file ...

  6. [DFNews] Touch ID不是神话,指模依旧能搞定。

    扫描制作翻模,使用含石墨硅胶压膜,前者复制指纹纹路,后者欺骗活体检测.

  7. JsonException: Max allowed object depth reached while trying to export from type System.Single

    在进行类转json字符串时,报错JsonException: Max allowed object depth reached while trying to export from type Sys ...

  8. servlet filter和springMVC拦截器的区别

    参考 http://blog.csdn.net/ggibenben1314/article/details/45341855

  9. Webpack 入门指南 - 2.模块

    这一次我们谈谈模块问题. 通常我们希望这个项目可以分为多个独立的模块,比如,上一次提高的 hello 函数,如果我们定义为一个模块,其它模块引用之后,直接调用就好了.在前端怎么使用模块呢?这可说来话长 ...

  10. 安卓通用shell大全

    一.[什么是shell] Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接口程序,如 ...