博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础
阅读量:5096 次
发布时间:2019-06-13

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

1.编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言

1.1 编译型与解释型

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 

解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 

这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

编译型

优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型

优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

2.2动态语言和静态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

2.3强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。

3.常量:约定俗成用变量名全部大写代表常量

1 AGE_OF_DAVID = 156

4.基础数据类型

4.1 int

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

4.2 str

在Python中,加了引号的字符都被认为是字符串!

多行字符串必须用多引号

msg = '''今天我想写首小诗,歌颂我的同桌,你看他那乌黑的短发,好像一只炸毛鸡。'''print(msg)

4.3、布尔值bool(True,False)

5.格式化输出、

%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦。

input接收的所有输入默认都是字符串格式!

使用%对%进行转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

6.逻辑运算

6.1在没有()的情况下优先级:not  >  and > or,有括号优先级关系为( )>not>and>or,同一优先级从左往右计算。

6.2  x or y , x为真,值就是x,x为假,值是y;

       x and y, x为真,值是y, x为假,值是x。

7.while else

while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句。如果执行过程中被break啦,就不会执行else的语句啦。

8. id,is,==

id()内置函数去查询一个数据的内存地址

 is 是比较的两边的内存地址是否相等

== 是比较的两边的数值是否相等

小数据池:Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

9.深浅copy

对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

l1 = [1,2,3,['barry','alex']]l2 = l1l1[0] = 111print(l1)  # [111, 2, 3, ['barry', 'alex']]print(l2)  # [111, 2, 3, ['barry', 'alex']]l1[3][0] = 'wusir'print(l1)  # [111, 2, 3, ['wusir', 'alex']]print(l2)  # [111, 2, 3, ['wusir', 'alex']]

对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的。

l2 = l1.copy()

对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

import copyl1 = [1, 'alex', True, (1,2,3), [22, 33]]l2 = copy.deepcopy(l1)

转载于:https://www.cnblogs.com/davidf/p/10543150.html

你可能感兴趣的文章
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
数据库连接字符串大全 (转载)
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Screening technology proved cost effective deal
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
javascript闭包
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
http://coolshell.cn/articles/10910.html
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
【3.1】Cookiecutter安装和使用
查看>>
【2.3】初始Django Shell
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>