Python笔记
python学习总结——语法与缩进
一.python基本语法介绍.
- 变量是可以直接使用,而且运行时动态变换变量类型的,比较像大部分的脚本语言。
a = 1 b = "test" c = [1, 2, 3, "string"] - 函数定义有两种方式:
1)def关键字方式:
def f1(x):
return x + 1
2)lambda表达式:
f1 = lambda x: x + 1
第一种方式可以定义复杂的函数,第二种方式可以方便地定义简单函数。
- 类的定义(支持OO编程,这个是促使我认为python是编程语言而不是脚本语言的重要因素)
class C1: def __init__(self, arg1, arg2): self.attr1 = arg1 self.attr2 = arg2 def some_method(self, x): return x + 1 - 引用模块
import os # os是内置的模块,提供大量的操作系统相关操作,用import xxx的方式引入模块,调用的时候需要用xxx.ff的方式;
from os import * # 通过from xxx import * 或者from xxx import ff的方式,调用的时候不需要模块名前缀,直接用ff即可。但是使用这种方式,要注意避免出现引用两个模块有相同的属性或者函数名。
import test # 引入自定义的模块
实际上,一个python文件就可以看做是一个模块,而一个包含__init__.py文件的文件夹,则可以看作是一个包(package)。引用包,实际上相当于执行了__init__.py文件,然后将该文件中定义的变量和函数引入到当前运行环境中。而__init__.py文件除了像一般的文件一样定义变量和函数外,还可以从其他模块(文件)中引入变量与函数。这些被引入的变量与函数也被引入到当前运行环境中。
在使用上,模块和包并没有本质的区别。只是在代码组织上,包可以将大规模的代码按文件进行划分,有利于协作开发。
但是,对于初学者来说,怎么方便怎么用才是最好的。
二.一些颠覆传统编程的概念
1)函数是可以作为参数和返回值的:
def f(n):
return n * n
def functionOfFunction(f, x, y):
a = f(x)
return lambda i: a + i - y
请稍微体会一下,但是不建议为了使用这个方式而定义难以理解的函数。实际上以上的函数是可以通过另外的方式简单实现的。当然也有一些情况,用函数生成函数来实现,能够大大简化程序,这才是我们使用函数的函数的合适时机。
2)函数和类实例都是“对象”,并且对象在使用过程中,都可以动态添加属性或者方法:
def f1(x):
return x * x
f1.a = 1
f1.b = "test"
class C1:
pass
c = C1()
c.test = f1
c.test(10)
3)另外还有一些内容,想到了再补充。
总之,python给人的感觉是一种动态的支持面向对象的语言,同时又具有很多脚本语言的影子,非常适合任务类的程序。
三.关于python的缩进
python严格的代码缩进格式要求,成为让人诟病最深的一个“特点”,同时,因为从语法上要求缩进对齐,因此python代码总是给人一种相对整齐的印象。所以这个特点好坏参半吧。
但是有一个事情必须注意:缩进的空格数(或者tab数)是可以由开发者自己决定的,但是要求就是缩进的格式必须前后一致。也就是说,如果一开始用4个空格进行缩进,那么第二层缩进就必须是8个空格,第三层就必须是12个空格,以此类推;使用了空格缩进,就不能使用tab缩进,反之亦然。
- 一定要保持连贯的缩进风格!
- 一定要保持连贯的缩进风格!
- 一定要保持连贯的缩进风格!
当由于缩进问题导致代码运行错误时,python解释器会有一个提示,但是如果代码数量已经非常庞大,定位起来也是非常困难而且无意义的(想想看,就是因为差一个空格,程序无法运行,即使解决了也没多少成就感)。
缩进风格的要求在不同的文件之间不做要求,也就是说,最好一个开发者独立写一个python文件(模块),避免不同的开发人员使用不同的缩进风格的问题。