博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python全栈开发day4
阅读量:5740 次
发布时间:2019-06-18

本文共 4434 字,大约阅读时间需要 14 分钟。

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 集合方法总结

       

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
(name,args)
    
else
:
        
print
(
'haha'
)
func(
24
)

 

转载于:https://www.cnblogs.com/opsedu/p/5546684.html

你可能感兴趣的文章
用户和开发者不满苹果iCloud问题多多
查看>>
attrs.xml中declare-styleable 详解(用于自定义控件的属性)
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法(转)
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>