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 变量
局部变量
在函数体区块内定义的变量,仅在当前函数中生效
全局变量
在函数体外定义的变量,在所有函数中都生效
例如:
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 )
|
时间: 2024-11-08 22:25:03