前言
这是本人第一次写博客,写博客的目的就是为了加深自己对知识的理解与巩固,并且分享我的学习过程,与大家共同学习,共同进步,如果大家有什么建议,我非常欢迎与你讨论。本人最近在学习Python,如果有人也在学习,很乐意与你进行相互学习与进步!
一、Python简单介绍
Python由一位叫吉多·范罗苏姆(Guido van Rossum)的荷兰人创作的,1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 1991年发布了第一个公开发行版。
二、Python是一门怎么样的语言
很简单的一句话,是一门脚本语言。你可能会疑问,就是是一门怎么样的脚本语言呢?那就再说具体一点,是一门动态解释型的强类型定义语言,看到这句话你可能会有点蒙了
,心里是不是会冒出几个疑问,什么叫做动态类型、什么叫做解释型、什么叫做强类型?Good!下面给你解释一下,希望你能懂,反正我懂了,哈哈。
动态类型AND静态类型:
(1)动态类型语言:简单一句话就是,程序在运行期间才去做数据类型检查的语言。如果这句话你懂了,那么就不用看下面的解释了!不懂的话就看看。也就是说哦,你在用动态类型语言编程时,不需要给变量定义类型,它会在变量赋值时,内部会自动保存下当前变量的数据类型!像Python、Ruby语言就是典型的动态类型语言。所以,记住在用Python编程时,不需要给变量定义类型哦。
(2)静态类型语言:它刚好跟动态类型语言相反,意思就是程序在编译是,就会进行数据类型的检查,在定义变量时,需要指定数据的类型!想C/C++就是典型的静态类型语言,其实C#和JAVA也是。
解释型AND编译型:
(1)解释型语言:也是一句话,源程序的运行和翻译是一起执行的,什么意思呢?就是说运行一条代码就将这条代码翻译成机器码跟计算机通信,它是不生成可执行文件的。这样的语言有其很大的优点,程序的运行控制权掌握在解释器的手上,你可以很好的进行调试代码,并且它的可移植性是非常好的,不需要改动任何代码,就可以移植到含有解释器的别的操作系统中运行。当然缺点就是执行效率低,暂用空间大,不仅要给用户程序分配空间,也要给解释器分配宝贵的系统资源。如Python、JavaScript、PHP、Ruby等都是解释型语言
(2)编译型语言:程序的运行和翻译是分开的,程序在编译时生成可执行的二进制文件,计算机就可以直接以机器语言来运行可执行文件,运行效率高,速度快。如C/C++、GO、Swift都是编译型语言。
强类型定义AND弱类型定义:
(1)强类型定义语言:意思就是,如果一个变量一旦被指定了某种数据类型,如果不经过强制类型转换,那么它永远是被刚开始指定的那种数据类型。例如,一个整形变量num,如果不经过强制类型转换,它是不可能被用来做字符串变量赋值的。
(2)弱类型语言:和强类型语言相反,它是可以忽略变量类型的,一个整形变量num,也可以用作字符串变量而不用经过强制类型转换。
不知道我上面的解释,你听清楚没,如果么有,可以去百度详细了了解一下呢!
上面说了这么多,我们可以得出下面结论:
三、Python优缺点
都说Python入门容易,简单易学。确实,Python是优雅、明确、简单的,所以程序看上去会很简洁、简单,所以对于我这种初学者还是可以上手的,并且深入下去,可以用它写出非常复杂的程序来。下面来自网上的总结:
1.高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
2.可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
3.可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
4.可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点: 速度慢、代码不能加密、线程不能利用多CPU等。
下面我们看看有关Python的解释器:
四、Python解释器
当我们用Python开始编写代码时,我们就要创建一个以.py结尾的文件名,当我们运行我们已经编写好代码时,我们需要运行我们的代码,这时我们就需要一个名为Python解释器的东西来运行我们的代码。
CPython:为什么叫做CPython呢?因为它是有C语言开发出来的,当我们运行Python时,它就启动运行了。CPython is Guido van Rossum's reference version of the Python computing language. It's most often called simply "Python"; speakers say "CPython" generally to distinguish it explicitly from other implementations.这是官网对它的描述。
IPython:IPython是基于CPython之上的一个交互式解释器,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
PYPY:PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。
五、Python安装
说到安装Python,我们可能会抛出疑问,我们是安装Python2还是安装Python3呢?当然是Python3啦,官网都说2020年停止Python2了,对吧。那么Python2和Python3有什么区别呢?
在我看来,就是Python3的功能更强大了,标准库更丰富了,兼容性更好了,是的,就是这样的。还有就是Python2的打印函数print可以不加括号,而Python3必须加括号进行打印。
说到安装就更简单了,如果你是Linux系统,根本就不用进行安装,因为Linux系统自带了Python,多好啊对吧!如果你是Windows系统或者IOS系统,上官网下载一个版本(我用的是3.5版本,现在都出到3.6了),点击安装即可,然后配置一下系统环境变量,实在不会安装,百度上有太多太多的教程了,一看便会。安装完后就可以开启你的Python“入坑”之路了!
六、开启人生的第一个Hello Word程序
在Linux下,创建一个Hello_Word.py的文件,如下:
当然,如果你想在Linux中直接./Hello_Word,你就需要在代码最前面加上一句话:#!/usr/bin/env python,这句话的目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单!是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器。
如果是Windows操作系统,按win+R,输入cmd
简单吧!注意,这里一定要打印Hello Word,有些喜欢打印其他的东西,我建议不要,为什么呢?因为形式很重要!哈哈哈哈!你看哪门的编程语言一开始不是打印Hello Word的呢!对吧。
对比其他语言Hello Word:
//C
1 #include <stdio.h> 2 int main(void) 3 { 4 printf("\nhello world!"); 5 return 0; 6 }
//C++
1 #include <iostream> 2 int main(void) 3 { 4 std::cout<<"Hello world"; 5 }
//JAVA
1 public class HelloWorld{ 2 // 程序的入口 3 public static void main(String args[]){ 4 // 向控制台输出信息 5 System.out.println("Hello World!"); 6 } 7 }
//PHP
1 <?php 2 echo "hello world!"; 3 ?>
//Ruby
1 puts "Hello world."
//GO
1 package main 3 import "fmt" 5 func main(){ 6 7 fmt.Printf("Hello World!\n God Bless You!"); 8 9 }
看出差异了吧!
对了!还有一点,如果你是在Windows上编写运行Python代码的,建议你用pycharm!关于它,你可以好好百度查查它。
七、变量
变量的定义与赋值:
1 #!/usr/bin/env python 2 #-*- coding:utf-8-*- 3 4 name = "dear_lin" 5 print(name) 6 7 name1 = name 8 name = "Hello" 9 print(name,name1)上面定义了nam变量,并且赋值为“dear_lin”,并且将name的值赋值给name1;
八、字符编码
仔细看,你会发现我上的代码,加了一行#-*-coding:utf-8-*-这样的东东,是什么意思呢?有什么用呢?其实就是为了支持中文显示。相信都应该ASCII码吧!
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(即一个字节),即:2^8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
而对于中文:为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
还有一点,我们安装的Python,如果你是Python2的话,想显示中文,就得加上#-*-coding:utf-8-*-这句,不然会报错,而如果是Python3,则不需要,因为Python3已经默认自带了。
九、用户输入
1 #!/usr/bin/env python 2 #-*- coding:utf-8-*- 3 4 name = input("What your name") 5 passwd = input("What your passwd") 6 7 print("name:"+name) 8 print("passwd:"+passwd)
如果你想输入的密码是不可见的,你可以这样做:
1 #!/usr/bin/env python 2 #-*- coding:utf-8-*- 3 4 import getpass 5 6 name = input("What your name") 7 passwd = getpass.getpass("Whart your passwd") 8 9 print("name:"+name) 10 print("passwd:"+passwd)
十、表达式if esle、for循环、while循环
1 #!/usr/bin/env python 2 #-*- coding:utf-8-*- 3 4 #猜数字游戏 5 ''' 6 用户输入一个数字与程序设定好的数字相比 7 如果用户输入的正确,打印猜对了 8 如果用户输入的小了,打印猜小了 9 如果用户输入的大了,打印猜大了 10 次数最多为3次 11 ''' 12 13 Right_number = 99 14 count = 0 15 16 #这里也可以用for循环:for count in rang(3): 17 while count<3: 18 #记住这里!input()函数默认输入的是字符串,所以要进行强制类型转换 19 usr_input_num = int(input("请输入一个数字:")) 20 if usr_input_num == Right_number: 21 print("恭喜你!猜对了!") 22 break 23 elif usr_input_num < Right_number: 24 print("猜小了!") 25 else: 26 print("猜大了!") 27 count += 1 28 29 else: 30 print("很遗憾!次数已达上限")
好啦!今天就学这么多!欢迎大家评论与交流!