博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3入门与进阶(二)
阅读量:6690 次
发布时间:2019-06-25

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

变量

python3中变量的定义是不固定类型的(动态),区分大小写
值类型 引用类型
不可变的(值类型) 可变的(引用类型)
int (整型) list (列表)
str (字符串) set (集合)
tuple (元组) dict (字典)
  • 通过内置函数id(),可以知道变量在内存的位置
b = "icessun"b = b + "hello"print(b)>>> "icessunhello"  # 不是说字符串是不可变的嘛?怎么改变了

如果字符串可以改变,那么可以使用索引值给字符串赋值"python"[0] = 'h' -----> 报错,会发现报错,是不行的。

上面程序的结果是因为,+连接符,把两个字符串连接起来了,链接起来的值重新赋值给了b元素,使用id(b)函数,会发现其实上面两个b变量在内存的位置是不一样的,所以第一个b变量的值没有改变,被覆盖了。

  • 乘方的表示法 :2**5 ----> 2的5次方=32
身份运算符

is / not is

a = (1,2,3)b = (1,3,2)print(a is b)    # 元组是不可变的print(a == b)  # 元组是有序的,值是不相等的>>> False    False# 集合a = {1,2,3}b = {1,3,2}print(a==b)  # 集合是无序的,所以值是相等的print(a is b)>>> True False# 字符串,数字   两个取值相等,则is 返回True,但是数字有特殊a = 'icessun'b = 'icessun'print(a is b)>>> Truea = 1   b = 1c = 1.0print(a==b)print(a==cprint(a is b)print(a is c)>>> True  True True False

从上面可以看出,元组是不可变的,改变里面元素的位置就变成了两个新的元组。is不是比较两个变量的值是否相等,而是比较变量在内存的地址是否相等,算术运算符==是比较值是否相等的

对象的三个特性 一切都是对象
id()函数:变量在内存的地址 is :身份运算符
type()函数:类型判断函数 isinstance(变量,(int,str,float....))
value值的比较 == :算术比较符
成员运算符
判断一个变量是否在一个变量里面
in / not in
b= 'a'b in {'c':1}>>> Falseb=1b in {'c':1}>>> Falseb='c'b in {'c':1}>>> True
  • 优先级:not > and > or

代码编写

  • 缩进来区分代码块,没有大括号{ }
  • pass:占位语句
  • 常量一般大写
  • 单行注释:#;推荐在这行语句的开头写,与上一条语句有空格
  • 多行注释: '''注释内容'''
  • 代码后面不需要分号,有也可以
  • 实例化一个对象,不需要new关键词
if else / elseif
a = input()a = int(a)print('a is ' + str(a))if a==1:    print('apple')elif a==2:    print('orange')elif a==3:    print('banana')else:    print('shoppingp')# 使用 if  elseif a==1:    print('apple')else:    if a==2:        print('orange')    else:        if a==3:            print('banana')        else:            print('shopping')

input()接收用户的输入,elif功能类似于switch功能;

int(a):因为终端输入的是字符串,所以应该强制转为数字进行比较
print('a is ' + str(a)):字符串的拼接只能两者都是字符串,否者会报错

for 变量 in 循环体
主要用来遍历循环:序列List,集合Set,字典Dict
a = [['apple','orange','banana','grape'],(1,2,3)]for x in a:    for y in x:        if y=='orange':            break   #  continue        print(y)  # 默认是换行(print(y,end='/n'))输出的,要想不换行:print(y,end=' ');故可以在end里面添加其他的符号来连接字符else:    print('fruit is gone')>>> apple 1 2 3 fruit is gone

break跳出里面的for循环,但是外面的for循环没有跳出,还是会执行;和else配对的是外面的for循环,所以依然会执行;要是在外层的for循环里面加入break,那么就不会执行else语句;for循环后面有else语句,当循环执行完毕,也会依然接着执行else语句,所以会输出fruit is gone;一般不推荐在for循环后面使用else语句

  • 循环中使用range()函数
for x in range(0,10):    print(x,end='|')>>> 0|1|2|3|4|5|6|7|8|9|for x in range(10,0,-2):    print(x,end='|')>>> 10|8|6|4|2|# 打印列表a中所有的基奇数项a=[1,2,3,4,5,6,7,8]# 循环+range()函数的方法for x in range(0,len(a),2):    print(a[x]) # 列表的切片的方法print(a[0:len(a):2])>>> [1,3,7]

range()函数的作用类似于其他语言中的for(i = 初始值;i < 长度;i ++);里面可以传入两个或者三个参数,两个参数的时候表示的是:初始值,长度;传入三个参数的时候表示的是:初始值,长度,步长

序列解包
def ice(a,b):    a1=a*3    b1=b*2+10    return a1,b1ice_a1,ice_b1 = ice(3,6)print(ice_a1,ice_b1)>>> 9 22a=1b=2                ====>    a,b,c=1,2,3  或者  (1,2,3)  当abc都相等的时候:a=b=c=1 或者 a,b,c=1,1,1c=3

序列解包:就是当一个函数有多个返回值的时候,不需要使用一个变量接收到所有的返回值,然后又重新遍历返回值,取到对应的返回值;只需要使用和返回值个数对等的变量依次接收就行;当然只是针对返回值是值类型的函数。个数相等,顺序对应

当在函数参数里面使用的时候,可以在实参里面修改默认值;在调用函数传入参数的时候,明确告诉实参,形参给传的是那个实参的值sum(y=3,x=2)

转载地址:http://szuoo.baihongyu.com/

你可能感兴趣的文章
Javascript动态加载脚本与样式
查看>>
LINUX用户和组小练习
查看>>
IPV6与VOIP
查看>>
Google搜索引擎特殊结果展示介绍
查看>>
集合框架-可变参数
查看>>
Nginx代理显实真实IP的解决
查看>>
开源的企业虚拟化平台:CecOS
查看>>
由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
查看>>
gns3 protocol is down的一个问题终于找到解决对策了
查看>>
centos 7 配置 iptable-service
查看>>
Css3之基础-9 Css 显示(显示方式、显示效果、光标)
查看>>
lamp环境搭建及应用(rpm)
查看>>
微软新推出大礼包了
查看>>
Cisco路由器密码重置
查看>>
RHCS+ISCSI+web构建高可用性群集
查看>>
Hive 数据库仓库的基本操作
查看>>
Spring AOP之简单实践
查看>>
Linux Bash脚本练习5
查看>>
我的友情链接
查看>>
apache禁止解析php文件
查看>>