Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了。不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的。
零.先抄书:
1.Python是解释型语言:
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。
此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。
用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。
再换成C#,C#首先是通过编译器将C#文件编译成IL文件,然后在通过CLR将IL文件编译成机器文件。所以我们说C#是一门纯编译语言,但是C#是一门需要二次编译的语言。同理也可等效运用到基于.NET平台上的其他语言。
2.与大多数语言不同,python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。这也就是游标卡尺的梗的来源。
一.第一个Python程序:
先输出Hello World,然后调用排序函数对一个list进行冒泡的升序排序,尽管程序结构简单,但是包含了大多数的基础语法
## coding=utf-8
##冒泡排序与HelloWorld
list = [8,1,2,66,5,123]
def BubbleSort():
for i in range(len(list)):
for j in range(i):
if list[j] > list[j+1]:
list[j],list[j+1] = list[j+1],list[j]
return list if __name__ == "__main__":
print("hello world")
list = BubbleSort()
print(list)
程序的运行结果如下:
hello world
[1, 2, 5, 8, 66, 123]
为了方便对比,我们再使用C#的代码实现同样的功能:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
BubbleSort();
} private static void BubbleSort()
{
int[] data = { , , , , , };
for (int i = ; i < data.Length - ; i++)
{
for (int j = data.Length - ; j > i; j--)
{
if (data[j] > data[j - ])
{
data[j] = data[j] + data[j - ];
data[j - ] = data[j] - data[j - ];
data[j] = data[j] - data[j - ];
}
}
}
foreach (int i in data)
{
Console.Write(i + ",");
}
Console.ReadLine();
}
二.Python程序的程序结构
从上面我们可以大概看出,一个完整的py程序结构大概如下:

我们知道,对于C/C++/C#等编程语言来说,程序的入口一定是main()函数,但是如果沿用这种思路来理解python的话就很容易踩坑。
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,都可以可以认为是Python的main函数。每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。因此,在之前的代码中,我们基本上可以使用这种方式来设置main函数的调用。
三.常量与变量
1 常量:
py并没有提供const关键字来定义变量,哭……
2 变量:
python的变量定义不需要声明类型,直接name=value 就可以了,比如:
a=1 ##整型变量a
b=0.02 ##浮点型变量b
str = "Hello World" ##字符串c
d=true ##布尔值d
py个人理解应该是故意在弱化变量的概念,当使用C#的思想去理解就出现了很大的偏差。
C/C++中的变量的概念是面向内存的,所以你要声明一个变量,表明空间大小,存储的格式(整数,浮点),以及一个永久不变的名字指向这个变量。而python只有name和object,比如a=1的语句,实际上做了三件微小的工作:
- 创建name a
- 创建object 1
- 将name a 关联到1这个object
然后,就能够直接使用a来调用1这个对象。至于强弱类型什么的,别纠结了吧……
py提供了type()函数来判断变量的类型,如:
a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
执行结果如下:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
3 数值类型:
python支持int(整型),longint(长整型),float(浮点)和complex(负数)四种类型的数值。
//碎碎念一句浮点只有float精度真的够用么……
举例:
a=10 ##int
b=51924361L ##长整型,用大写L结尾
c=15.20 ## 浮点
d=1+2j ##复数,用a+bj或complex(a,b)表示
4 字符串:
str = "Hello World" ##定义字符串
str1 = str[0:4] ##截取字符串,从上标到下标,注意下标从0开始
转义符:

格式化输出:py的格式化输出用法与C语言的printf函数一样:

四.列表与字典:
1.列表:
与声明其他变量一样,python在定义列表时不需要
List <int> list = new List<int>();
直接赋值即可:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
常见的列表操作函数如下:

2.元组:元组类似于静态列表,其中的元素不能修改。
3.字典:字典是键值对的集合,声明字典时一样不需要定义字典类型,也不需要new操作:
dict = {'Alice': '', 'Beth': '', 'Cecil': ''}
PS:1.字典的键不能重复,同时键是不会发生变化的。
2.python中向字典中增加值无需使用add方法,直接操作其键值即可:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # 更新值
dict['School'] = "DPS School"; # 添加一个键值对
常见的字典函数如下:

Python学习笔记(Ⅰ)——Python程序结构与基础语法的更多相关文章
- python学习笔记:(一)基础语法
一.编码 默认情况下,python3采用的是utf-8,所有字符串都是unicode字符串.如果有其他需要的时候,可以修改为其他的. 如:# _*_ coding:gb2312 _*_ 二.标识符 标 ...
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- python学习笔记五 模块上(基础篇)
模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- python学习笔记——多进程间通信——Linux信号基础
1 信号的基本描述 Signal信号(其全程为软中断信号)是Linux系统编程中非常重要的概念,信号是异步进程中通信的一种方式. 作用是通知进程发生了异步事件.进程之间可以调用系统来传递信号, 本身内 ...
- Python学习笔记(一):基础知识
一.什么是python? python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学 二.编译型语言和解释型语言 编译型语言就是把程序编译成计算机语言然后执行,(一次编译到处运 ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- go 学习笔记之值得特别关注的基础语法有哪些
在上篇文章中,我们动手亲自编写了第一个 Go 语言版本的 Hello World,并且认识了 Go 语言中有意思的变量和不安分的常量. 相信通过上篇文章的斐波那契数列,你已经初步掌握了 Go 语言的变 ...
- python学习笔记六 面向对象相关下(基础篇)
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...
随机推荐
- 如何用div绘制一个容器,例如圆形
需求:一个圆形的容器,里面有两种颜色,随比率不同而变化. 实现同一个容器中两种颜色变化的关键是css渐变 //background:linear-gradient(#818181 30%,#06FF3 ...
- LeetCode 929.Unique Email Addresses
Description Every email consists of a local name and a domain name, separated by the @ sign. For exa ...
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- Beta(5/7)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- Spark环境搭建(一)-----------HDFS分布式文件系统搭建
下载的压缩文件放在~/software/ 解压安装在~/app/ 一:分布式文件系统搭建HDFS 1,下载Hadoop HDFS环境搭建 使用版本:hadoop-2.6.0-cdh5.7. ...
- Spring MVC工作流程
本文回答Spring MVC如何处理一个请求的. 1.请求是由中央调度器DispatcherServlet接收的. 2.中央调度器将请求交给处理器映射器HandlerMapping,处理器映射器解析请 ...
- LOJ 6270
最近(一直)有点(很)蠢 按照区间大小排序做区间包含多少区间的话 只用考虑 左端点比当前左端点小的和右端点比当前右端点大的,因为不可能同时满足 关于K,就在做到K的时候减一下就好了,一直傻逼在这了 # ...
- js实现数组去重的几种方法
1.简单结构的数组,例如[1,2,3,3,4],使用es6提供的Set和Array.from Set:是一种新的数据结构,可以接收一个数组或者是类数组对象,自动去重其中的重复项目. 类数组对象:只包含 ...
- CSS3_标准盒子模型和怪异盒子模型
#box{ width: 200px; height: 200px; background-color: pink; } 标准盒子模型 box-sizing: content-box; padding ...
- AJAX-wamp安装的“橙色”问题
安装wamp可能会出现的问题 ##1 正常安装wamp后,打开wamp可以在右下角看到一个图片,绿色即正常,红色或者橙色即意味着Apache+Mysql/MariaDB+Perl/PHP/Python ...