Python学习(1)——特点和基本思想

基本上每个人学习的第一门编程语言都是C语言,对编程的基本思维方式和语句都熟悉了,所以在学习新的编程语言时,可也跳过这些(不是真的跳过,还是要粗略看点的,尤其注意它和自己掌握最好一门语言的差异),将更多的经历去理解新语言的特点和其思想。


一、特点

  Python是一种解释型面向对象动态数据类型的高级程序设计语言。

  解释型:Python程序不进行预编译,在执行时先解释机器码在执行(由解释器完成),解释是一行一行的,所以很慢,而且每执行一次就要翻译一次,效率比较低。如Matlab、Html等。

  面向对象:OOP思想这里就不多说,增加了可维护性,可扩展性,可重用性。

  动态数据类型:变量不需要指定数据类型(即变量的类型是根据它所指向的内存单元中的数据类型决定的,因此不需要声明,指向什么类型,就是什么类型)。Python的变量,可变的是指向,不可通过变量名修改其指向数据单元的内容(即某个内存单元中的数据内容是固定不变的如:


# 12的地址为0x12345672
# 13的地址为0x12345673
# 14的地址为0x12345674
# 15的地址为0x12345675

x = 12 # x指向的地址为0x12345672
y = 12 # y指向的地址为0x12345673
x = y  # x指向的地址为0x12345673,  x = y 的含义是让引用x指向引用y所指的那一的对象

x = 14 # x指向的地址为0x12345674
y = 15 # x指向的地址为0x12345675
x = y  # x指向的地址为0x12345675
# x和y指向内存地址,类似C语言的指针;内存单元中的数据内容是固定不变的,
# 例如内存单元0x12345672 始终保存数据12,直到程序结束,释放空间 
  

  静态数据类型,如c语言,声明变量时必须指明数据类型,因为要为每个变量提前分配好固定大小的内存空间,变量一直指向内存单元,内存单元的内容一直在变。

二、基本思想

     

1、典型的Python文件结构:


注意:(1)表示说明解释器的路径,必须在第一行


2、Python程序的执行起点

  在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。如:

#!/usr/bin/python

x = 1
y = 2

print x
print y
程序从上到下执行


  每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。如:

#!/usr/bin/python

print 'this is python'

def test():
    print 'hello word'

if __name__ == '__main__':
    test()
输出结果:

this is python
hello word

总结一下:

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行


3 Python模块

  写代码不可能一个文件写下去,这样可维护性太差。为此C和C++引入头文件,Python则引入模块。

在Python中,一个.py文件就称之为一个模块(Module),abc.py文件的模块名为abc。

块可以避免函数名和变量名冲突,相同名字的函数和变量完全可以分别存在不同的模块中,但尽量不要重名。

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

模块导入语句:

#导入test.py
import test 


#从模块中导入一个指定的部分到当前命名空间
#从模块 fib 的 fibonacci 函数
from fib import fibonacci 

#把一个模块的所有内容全都导入到当前的命名空间
#引入 math 模块中所有的东西
from math import *
       
     模块使用:

# 调用support模块里包含的print_func函数
support.print_func("Runoob")


     包(Package):


包其实就是文件夹,与普通文件不同的是文件下多了个空的__init__.py,如果没有__init__.py这个文件,Python就把这个目录当成普通目录,而不是一个包。引入包后abc.py模块名由abc变为packa_test.abc了。

可以有多级目录,组成多级层次的包结构,如下:


www.py的模块名为packa_test.web.www


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值