Python全栈开发day4

Posted Shaw Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈开发day4相关的知识,希望对你有一定的参考价值。

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             # 最里面一层内存地址相同

    注意:

    pythonstrint不能被修改,想要修改,只能再创建

    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以上是关于Python全栈开发day4的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈开发day4

Python全栈-day4

python全栈学习--day4

python 函数之day4

Day4 - Python基础4 迭代器装饰器软件开发规范

day4.初识python

(c)2006-2024 SYSTEM All Rights Reserved IT常识