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)

最新文章

  1. [转] 从知名外企到创业公司做CTO是一种怎样的体验?
  2. Distributed2:Linked Server Login 添加和删除
  3. 连连看final发布视频
  4. Oracle EM 的访问方式由HTTPS改为HTTP
  5. barabasilab-networkScience学习笔记2-图理论
  6. 一个purge参数引发的惨案——从线上hbase数据被删事故说起
  7. 学习JS中的小问题
  8. define的用法
  9. GetCursorPos/WindowFromPoint/SendMessage
  10. Winform 程序嵌入WPF程序 并发送消息
  11. ASP.NET里面,如果设置了form的 onsubmit="return false;"之后,就不能提交按钮了?
  12. python 使用 'python -m pip install --upgrade pip'提示PermissionError: [WinError 5] 拒绝访问
  13. Javascript的RegExp对象(转载自网络)
  14. eclipse修改默认workspace
  15. 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
  16. OpenCV——老照片效果
  17. 修改dll的错误打开方式
  18. 向github提交代码不用输入帐号密码
  19. 交叉编译sudo
  20. VMware虚拟机中CentOS 7的硬盘空间扩容

热门文章

  1. ListView 中含有 EditText 导致焦点丢失的问题
  2. 右键添加 CMD 命令提示符
  3. [经验交流] Kubernetes Nginx Ingress 安装与使用
  4. 为linux普通用户添加超级用户权限sudo
  5. jquery 百度搜索
  6. deepin gala窗口管理器关闭动画
  7. 使用Ninject进行DI(依赖注入)
  8. Android 进程通信机制之 AIDL
  9. Ejabberd作为推送服务的优化手段
  10. 一起学习KenDo