Python 3 学习的第一天——Python基础

by admin on 2019年12月15日

1、python介绍:python是一门解释型语言、弱类型语言

Python基础概念

  Python 学习的第一天

1、用关键字class来声明类;
2、继承时用“(父类名)”的方式,
3、类中定义的函数的第一个参数都是self,表示类实例本身;
4、类的初始化函数(相当于Java的构造函数)为:init(self,其它参数):(注意,是两个下划线。)

5、若像Java那样设置变量为private,python需要特殊定义的变量名,具体如下:在变量前加两个_表示,变量为私有(private)。
其实,Python 解释器对外把__name
变量改成了_Student__name,所以,仍然可以通过_Student__name
来访问__name 变量:但,不要这样做。

Python
是一门现代化的面相对象的编程语言,有着丰富的扩展库,并具有易于学习、应用广泛的特点。

2、
编程语言分类:编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言

一、编码

  Python解释器加载.py文件中的代码的时候,对内容进行编码,在Python2.x中默认使用的是ASCII,因此我们使用Python2.x版本输出中文的时候,会出现以下错误。

print('你好世界')

图片 1

 

我们需要在开头添加编码信息,指定执行.py文件时候使用什么格式的编码

#!/user/bin/env python
#-*- coding:utf-8 -*-

  但是在Python3.x我们可以直接输出中文,因为Python3.x中默认使用UTF-8进行编码,所有字符串都是unicode字符串。

图片 2

 写此博客
是为了激励自己,并且将自己的心得以及遇到的问题与人分享

python 的多态

1、与java一样。不过多了一点特性,就是,不一定需要传入接口的子类,而是只要有接口调用的对应方法即可运行。这就是python动态语言的特性。

2、获取一个对象的所有属性和方法,用dir(对象)方法;
3、isinstance(a,b):判断a是否为b的实例;
4、type(对象):返回对象的类型,可用 == 进行后续判断。

对于python程序执行效率的分析,时间复杂度与空间复杂度同样是适用的。在总体时间复杂度相同的情况下,我们也可以直观的使用同一台机器上的运行时间来做直接比较。在
python的time 模块中有一个 time
函数,它可以在任意被调用的地方返回系统时钟的当前时间。通过在开始和结束的时候分别调用两次
time 函数,然后计算差值,就可以得到一个函数执行的精确秒数。

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

 二、标识符

  • Python中标识符命名规则第一个字符必须是字母或者是下划线’_’。
  • 除了了开头的第一个字符其它部分可以使用字母数字下划线
  • 标识符对大小写敏感

一、课堂笔记

实例属性与类属性

在类中定义的属性就是类属性,通过实例对象或self绑定的属性就是实例属性。实例属性的优先级高于类属性(即,都存在时,会获取到实例属性的值)

以从1到N的自然数求和为例子

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

三、Python中命名的保留字段

下面这些都是Python中的保留字段,我们使用Python自带的模块中的函数输出当前版本中保留字段,我们对变量进行命名的时候,不能够使用这些关键字。

import keyword
print(keyword.kwlist)

"""
输出结果:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 
'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
"""

1.Python 3.0
和 Python 2.0 不兼容  Python 2.6 和 Python 2.7 是 Python
的过度版本

import timedef Sum_1: sum = 0 for i in range: sum += i return sum def main(): N = 100000 for echo in range: begin_time = time.time() sum1 = Sum_1 end_time = time.time() print("Sum method 1 -- Echo %d -- Result %d -- Cost %f seconds."%(echo, sum1, end_time-begin_time))if __name__ == "__main__": main()

【注意】计算机不能直接认识并执行我们写的语句,它只能认识机器语言(二进制的形式)。

四、注释

# 单行注释使用 

"""
多行注释使用这个
"""

2.有关Python
的安装以及helloworld 的操作不做笔记了。

运行结果为:

3、编译型与解释型的比较:

五、变量

3.变量——是为了存储程序运算过程中的一些中间结果  
 变量进行命名的时候不允许存在空格

Sum method 1 -- Echo 0 -- Result 5000050000 -- Cost 0.036053 seconds.Sum method 1 -- Echo 1 -- Result 5000050000 -- Cost 0.032034 seconds.Sum method 1 -- Echo 2 -- Result 5000050000 -- Cost 0.018009 seconds.Sum method 1 -- Echo 3 -- Result 5000050000 -- Cost 0.010006 seconds.Sum method 1 -- Echo 4 -- Result 5000050000 -- Cost 0.010509 seconds.

#编译型:

1、对变量进行声明

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = 'alexsel'
age = 26

这两行代码声明了两个变量,一个是name值为alexsel,一个是age值为26。

变量的作用就是指向内存中的某个地址中保存的内容。

图片 3

4.Python
中不区分常量变量  常量在命名时会全部大写 但依然可以改变
仅仅是为了区分

可以看出,Python每次运行都能得出正确的结果,而运行时间也在同一个数量级上波动。如果我们采用高斯求和公式进行算法改进——

优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可脱离语言环境独立运行。

2、一个变量的值个可以赋予另一个变量

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = 'alexsel'
name1 = name

这个时候输name和name1输出的值都是alexsel,而且在内存中它们公用一个地址,它们同指向内容alexsel在内存中存放的地址。

图片 4

 

5.内存回收机制  del
——手动强制拆除“门牌号”

图片 5高斯求和公式

缺点:编译之后如果程序需要修改就必须对整个模块重新编译,编译时,根据运行环境生成机器码,此时不同的操作环境之间的移植就会出现问题,需要根据运行的操作系统环境,来编译不同的可执行文件。

六、行与缩进

Python与最明显的特点就是使用缩进来表示一个代码块,无需向其他语言一样加一个{},而且每段代码结束无需使用结束符,如果一行需要写多行代码的时候,才需要使用;。  

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = 'alexsel'

if name == 'alexsel':
    print('yes')
else:
    print('no')

如果缩进出现错误,就会导致代码无法正确执行,所以我们以后书写的时候需要注意缩进的问题,分辨出它到底是属于哪个代码块。

 图片 6

一行中写多条语句使用‘;’进行分割

name = 'alexsel';age = 99;print(name,age)
  1. unicode
    是向下兼容gb2312   Python 3.0 不需要更改 直接支持中文 
import timedef Sum_1: sum = 0 for i in range: sum += i return sumdef Sum_2: sum = *N/2 return sum def main(): N = 10000000 ###累加求和 for echo in range: begin_time = time.time() sum1 = Sum_1 end_time = time.time() print("Sum method 1 -- Echo %d -- Result %d -- Cost %f seconds."%(echo, sum1, end_time-begin_time)) print("----------------------------------------------") ###使用高斯公式 for echo in range: begin_time = time.time() sum1 = Sum_2 end_time = time.time() print("Sum method 2 -- Echo %d -- Result %d -- Cost %f seconds."%(echo, sum1, end_time-begin_time))if __name__ == "__main__": main()

#解释型:

七、多行语句

Python的代码通常是一行代表一条语句,如果我们以后遇到一条很长的语句,需要分行怎么办,我们可以在要分行的地方添加 
\ 来实现多行语句。

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = 'alexsel'

name2 = name + \
    name + \
    name
print(name2)

#输出结果为alexselalexselalexsel

7.注释 单行注释 用 #  

运行结果如下:

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

八、使用print进行输出

之前我们一直在使用print进行变量值得输出,在这里我们就再简单讲一下。

#!/user/bin/env python
#-*- coding:utf-8 -*-

age = 123
name = 'alexsel'
print(age)
print(name)
#使用两次print输出的时候,会自动换行,因为print的结尾默认是换行'/n',我们可以自定义print结尾符

print('123',end='') #结尾符为空
print('456',end='yyy')  #结尾符为yyy
print('789',end='\t')   #结尾符为一个制表符
print('10')

输出结果如下

123
alexsel
123456yyy789    10

      多行注释 用”’    ”’  或者 “””  
“””

Sum method 1 -- Echo 0 -- Result 50000005000000 -- Cost 1.237429 seconds.Sum method 1 -- Echo 1 -- Result 50000005000000 -- Cost 1.181615 seconds.Sum method 1 -- Echo 2 -- Result 50000005000000 -- Cost 1.044307 seconds.Sum method 1 -- Echo 3 -- Result 50000005000000 -- Cost 1.056946 seconds.Sum method 1 -- Echo 4 -- Result 50000005000000 -- Cost 1.041368 seconds.----------------------------------------------Sum method 2 -- Echo 0 -- Result 50000005000000 -- Cost 0.000000 seconds.Sum method 2 -- Echo 1 -- Result 50000005000000 -- Cost 0.000998 seconds.Sum method 2 -- Echo 2 -- Result 50000005000000 -- Cost 0.000000 seconds.Sum method 2 -- Echo 3 -- Result 50000005000000 -- Cost 0.000000 seconds.Sum method 2 -- Echo 4 -- Result 50000005000000 -- Cost 0.000000 seconds.

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

九、获取用户输入的值

在Python3.x中想要获取用户输入的值,我们需要使用input,在Python2.x中想要获取用户输入的值和Python3有所不同,需要使用raw_input,为了方便区分我们都进行介绍。

在Python3.x中

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = input('请输入名字:') #在这里会等待用户输入值,知道用户按下回车结束,然后将用户输入的值赋给name
print(name)

在等待输入的时候我们输入alexsel,然后查看结果,结果如下

请输入名字:alexsel
alexsel

在Python2.x中的情况

name = raw_input('请输入名字:')
print(name)

输出结果和Python3的一样

8.使用 input() 进行输入 操作  
达到用户交互的目的  需要注意的是 input
接收到的所有数据都是字符串,即便是数字仍然是当作字符串来处理

可以看出,高斯公式对于大数累加求和更为有利,这是符合常识的。从以上的例子里我们也能感受到,python对于大数不需要做单独的处理,这也是python广泛应用于科学计算的原因之一。

4、python发展史:需要注意的是,2008年,同时发布了2.x、3.x两个版本。

实例

这里我们就做一个简单的用户验证代码,在这串代码中正确用户名为:alexsel
正确密码为:123456,代码下节我们会一一解释,大家在这就当做一个小练习试一下。

当用户名输入错误的时候回提示用户名错误,密码错误的时候回提示密码错误,当用户名和密码都正确的时候登录成功。

#!/user/bin/env python
#-*- coding:utf-8 -*-

name = input('请输入用户名:')
password = input('前台输入密码:')
if name == 'alexsel':
    if password == '123456':
        print('恭喜,登录成功!!!')
    else:
        print('密码错误!')
else:
    print('用户名错误!')

 

5、python程序的编写:

十、数据类型

Python的数据类型比较多,而且内容繁多,所以需要用一个大的章节来讲啦,今天就到这结束了,明天Python数据类型详解,记得再来看哦!!

 

(1)python的程序可以直接写在命令行中进行编写和执行;

二、心得

*命令行进入方式:win+R  ===》  输入cmd  ===》  回车键  ===》
 输入python

从自己选择走上 Python
这条路的时候,只希望自己可以一直坚持下去,第一天的学习都是一些基础知识,其中大部分都在曾经学过的C、JAVA中有所体现,但毕竟这是一条长远的路,革命尚未成功,同志们仍需努力。

(2)把程序写在.py文件中,可以反复使用程序,需要注意的是,文件的编码格式为UTF-8。

 

6、变量:将运算中的中间结果暂存到内存,以便后续程序调用。

 

#变量的命名规则:

 

(1)由字母数字下划线组成;

 

(2)不能用数字开头,更不能是纯数字;

 

(3)不能用关键字;

(4)不能太长;

(5)不要用中文;

(6)要有意义;

(7)要区分大小写;

(8)推荐使用驼峰体或下划线;

*驼峰体:除首字母外的其他每个单词的首字母都大写;

*下划线:每个单词之间用下环线分开。

7、数据类型:

(1)int(整数):用于计算或用于大小的比较,运算方式有:+、-、*、/;

(2)str(字符):字符串可用单引号、双引号、三引号引起来;

(3)bool(布尔):真假判断,True、False。

8、常量:用所有字母大写来表示常量,例如:PI = 3.141592653。

9、注释类型:

(1)单行注释:   #被注释内容

(2)多行注释:   ”’被注释内容”’   、   “”“被注释内容”“”

10、用户交互:使用input()函数,可以让我们和计算机互动起来

*语法:   内容 = input(“提示信息”)

【注意】   s = input(“提示语”)   ;电脑接收到的是字符串类型,可以用  
int()   把字符串转化成整数。

常用符号:

//:整除(地板除),例如:print(10//3);

%:计算余数,例如:print(10%3)。

11、if语句:

(1)if 条件:

                     代码块

意义:当条件成立,执行代码块

(2)if 条件:

                    代码块1

         else:

                  代码块2

意义:当条件为真,执行代码块1,否则,执行代码块2

(3)if 条件1:

                      代码块1

         elif 条件2:

                      代码块2

         elif ……

                      ……

         else:

                 else代码块

嵌套:if…else…可以无限地嵌套,但写的时候尽量控制在3~5以内。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图