python基础一

一 python介绍

    python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  

(龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。

 

目前Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

 

2 python是一门解释型 弱类型的编程语言.

2.1 编译型与解释型。

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

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

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

 

 

 

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

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

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

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

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

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

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

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

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

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

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

 

3 python的种类

 

CPython

当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结:

  Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

 

4 单行注释和多行注释

当行注释:# 被注释内容,'注释内容'  , “注释内容”

多行注释:'''被注释内容''',或者"""被注释内容"""

 

5 变量

变量是什么?  变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。

5.1、声明变量

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3   
4 name = "zhh"

上述代码声明了一个变量,变量名为: name,变量name的值为:"zhh"

变量的作用:昵称,其代指内存里某个地址中保存的内容

 

变量的命名规范

1 变量由字母,数字,下划线搭配组合而成
2 不可以用数字开头,更不能是全数字
3 不能是python的关键字,这些符号和字母已经被python占用,不可以更改

如:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
4 不要用中文
5 名字要有意义
6 不要太长
7 区分大小写
推荐大家使用驼峰体或者下划线命名
驼峰体:除首字母外的其他每个单词首字母大写
下划线:每个单词直接用下划线分开

推荐定义方式 驼峰体或下划线

#驼峰体

AgeOfZhh = 20

NumberOfStudents = 80

#下划线

age_of_students = 56

number_of_students = 80
View Code

2. 变量的数据类型:

         ①.int 整数:+,-,*,/,%(计算余数),//(整除)

         ②.str 字符串:',"",''',"""括起来的内容(注意:引号使用同一种在一个字符串中.)

                字符串可以进行+,*.

           '+'表示字符串之间的拼接          '*'表示相乘,字符串的内容的倍数.

         ③.bool 布尔值.只有真或者假,True和False.

 

 

 

 

3. 变量的赋值

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 name1 = "zhh"
5 name2 = "zhangqiang"

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 name1 = "zhh"
5 name2 = name1

 

定义变量不好的方式举例

  • 变量名为中文、拼音
  • 变量名过长
  • 变量名词不达意

6用户程序交互

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3   
4 # 将用户输入的内容赋值给 name 变量
5 name = input("请输入用户名:")
6   
7 # 打印输入的内容
8 print(name)

 将字符串转化成整数:str => int =>int(str)     例如

#让用户输入a,让用户输入b,计算机计算a+b的结果
a = input("请输入a:")    #input收到的内容为str
b = input("请输入b:")
    #将字符串转变成整数   int(字符串)
c = int(a) + int(b)
print(c)

字符串拼接

字符串可以进行"相加"和"相乘"运算。就是字符串的拼接 和字符串重复

>>> name
'zhh'
>>> age
'22'
>>> 
>>> name + age  #相加其实就是简单拼接
'zhh22'
>>> 
>>> name * 5 #相乘其实就是复制自己多少次,再拼接在一起
'zhhzhhzhhzhhzhhzhh'

 

7  流程控制语句 if

1.语法一:

       if 条件:                 #引号是将条件和结果分开

            结果1.             #四个空格,或者一个tab键,告诉程序满足这个条件

        结果2

     如果条件是真(True)执行结果1,然后结果2,如果条件假(False)直接结果2

   2.语法二:

       if 条件:

            结果1

        else:

             结果2

         代码3  

print("咣咣咣,谁呀")
gender = input("请问是男是女?")
if gender == '':
    print("请找隔壁")
else:
     print("进来吧")

 == 表示判断   = 表示赋值

3.语法三:

        if 条件1:

             结果1

         elif条件2:

              结果2

          ........

          else:

               结果n

例如

month = input("请输入一个月份")
if month == '一月':
    print("吃香蕉")
elif month == '二月':
    print("吃苹果")
elif month == '三月':
    print("吃蛋糕")
elif month =='四月':
    print("吃葡萄")
..........
else:
    print("爱吃嘛吃嘛")

 

4.语句四--嵌套

        if 条件1: 

           结果1

            if 条件2:

                 结果2

             else:

                  结果3

         else:

              结果4

print("咣咣咣, 谁呀? ")
gender = input("请问, 你是男的还是女的?")
if gender == '':
    # pass #  pass 过. 表示语法的完整性
    print("男的去隔壁.")
else:   # 不是男的
    age = input("今年贵庚了?")
    if int(age) > 48: # input接收的是字符串. 48是int. 这两个数据类型是不能比较的
        print("大妈, 您找谁?, 可能在隔壁")
    else:
        print("我家的瓜, 特别甜.")

 

8 格式化输出

name = input("请输入名字:")
age = input("请输入年龄:")
job = input("请输入你的工作:")
hobby = input("请输入你的爱好:")

s = '''------------ info of %s -----------
Name  : %s
Age   : %s
job   : %s
Hobbie: %s
------------- end -----------------''' % (name, name, age, job, hobby)

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

 

9 基本运算符

 

运算符

 

  计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

 

算数运算

 

以下假设变量:a=10,b=20

 

 

比较运算

以下假设变量:a=10,b=20

 

赋值运算

以下假设变量:a=10,b=20

 

逻辑运算

 

针对逻辑运算的进一步研究:

  1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

例题:

判断下列逻辑语句的True,False。

 

1 1,3>4 or 4<3 and 1==1
2 2,1 < 2 and 3 < 4 or 1>2 
3 3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4 4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5 5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
6 6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

 

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

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

注:  只记住 x or y 即可,and 跟or相反

 

10 流程控制之while 循环

 

10.1. 循环
while 条件:
  代码块(循环体)
else:
当上面的条件为假. 才会执行

 

执行顺序:
判断条件是否为真. 如果真. 执行循环体. 然后再次判断条件....直到循环条件为假. 程序退出

 

 

 1 count = 1
 2 while count <= 5:
 3     print(count)
 4     count = count + 1
 5 
 6 
 7 
 8 结果:
 9 2
10 4

 

10.2,循环中止语句 

如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句

  • break用于完全结束一个循环,跳出循环体执行循环后面的语句
  • continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
 1 while True:
 2     content = input("请输入一句话,(输入q结束):")
 3     if content == 'q':
 4         break
 5     print(content)
 6 
 7 
 8 
 9 
10 结果:
11 请输入一句话,(输入q结束):是的
12 是的
13 请输入一句话,(输入q结束):呵呵
14 呵呵
15 请输入一句话,(输入q结束):q
16 
17 Process finished with exit code 0

 

例子:continue

while True:
    content = input("输入一句话,(输入q结束):")
    if content == 'q':
        continue
    print(content)




结果:
输入一句话,(输入q结束):13
输入一句话,(输入q结束):13
输入一句话,(输入q结束):55
输入一句话,(输入q结束):q
输入一句话,(输入q结束):

 

当想排除某个内容是也可以用continue.

 

count = 1
while count <= 10:
    if count == 5:
        count += 1
        continue        # 用来排除一些内容
    print(count)
    count += 1



结果:
2
4
7
9

Process finished with exit code 0

3.while........else......语句

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

但是,当中间有break时,会直接退出while...else...语句(while..else..属于一个整体)

 

count = 1
while count <= 5:
    count = count + 1
    print(count)
else:
    print("结束了")




结果:
3
5
结束了
count = 1
while count <= 7:
    count = count + 1
    if count == 4:
        break
    print(count)
else:
    print("结束了,撒花")
print("完蛋了")


结果:
3
完蛋了

Process finished with exit code 0

 

11 内容编码

python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

1. ascii. 最早的编码. 至今还在使用. 8位一个字节(字符)
2. GBK. 国标码. 16位2个字节.
3. unicode. 万国码. 32位4个字节
4. UTF-8. 可变长度的unicode.
英文: 8位. 1个字节
欧洲文字:16位. 2个字节
汉字. 24位. 3个字节

8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB


应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

 

 

转载于:https://www.cnblogs.com/xihuxiangri/p/9374379.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值