1)函数声明:以关键字def开头,紧跟函数名称,然后是用括号括起来的参数。多个参数以逗号分割

  •       格式:

def  函数名(size,a_kilobyte_is_1024_bytes=True):

                       语句体

  •     python要求至少一条语句体, pass

def    test ()

                         pass

 

2)python 函数可以有返回值,但不指定返回值数据类型,如果没有return 返回明确的值,则默认返回空值 None

  •     格式 

  def  函数名():

                       s="您好"

                      return s

  •     如果有return 则返回其后的值,否则返回空值 None
  •       函数只能使用一条return语句,但可以返回多个值

              def compute (x,y):

                   s=x+y

                  s2=x-y

    return [s,s2]

                 result =compute(10,20)

                 print(result)

                 print(result[0])

                 pirnt(result[1])

  •   最好使用原组返回多个个值,因为无法修改

小括号可以省略,系统会识别为元组数据

  •     return (s,)# 如果元祖只有一个元素,必须加逗号,否则会报错,因为会误认为返回具体值,而不是元组

3) 可选的和命名的参数(书中例子有点繁琐,使用简单的函数举例)

  •      python允许函数有默认值。如果函数被调用的时候没有指定参数,那么参数将使用默认值。

 b=3

                   def  add(a,b):


                      print("b:"+str(a))

                      pritn(a+b)

                  add(1,b)  #此时 a=1, b=3

                     结果:

                      a:1

                      b:3

                     总和:4

                  add(b,1) #此时 a=b , b=1

                      结果:

                      a:3

                      b:1

                      总和:4

  • 通过使用命名的参数还可以按照任何顺序指定参数

 add(b=b,a=1) #此时使用命名参数指定顺序

                   结果:

                   a:1
                   b:3

                 总和:4

  •      命名参数是指定形参传递具体的值:

 1)命名参数功能是不用考虑形参传递的顺序

                       add(1,c=2,b=3)

                      add(b=1,a=2,c=3)

 

 2)一旦启用命名参数,则之后的参数均需使用名参数

                       add(1,b=2,c=3)  #形参传递b=2是命名参数,它的右侧传参必须使用 c=3

                            a:1
                            b:2
                            c:3
                            总和:6

  3)直接传参程序会按顺序传递,其他非命名参数则可以不按顺序指定,但非命名参数需要按原来定义参数的顺序传参

                         add(1,c=2,b=3)

                          a:1

                          b:3

                          c:2
                         总和:6

 

 4)其他

  •     docstring三引号(''' ....  ''')包含的文本多作为注释属性调取,可用 __doc__调取:

def test(a,b):

'''

测试docstring

'''
print (a+b)

test(1,2)

print(test.__doc__)

                结果:     

两数之和:3

测试docstring

 

  •     import 的搜索路径

 1)尝试import一个模块时,python 会寻找几个地方,即sys.path里面所有的路径 (用列表存储所有路径)

                      >>> import sys

                      >>> sys.path

                            ['C:/Programs/Python/Python36', 'C:\\Programs\\Python\\Python36\\Lib\\idlelib',       
                            'C:\\Programs\\Python\\Python36\\python36.zip', 'C:\\Programs\\Python\\Python36\\DLLs',
                            'C:\\Programs\\Python\\Python36\\lib', 'C:\\Programs\\Python\\Python36',
                            'C:\\Programs\\Python\\Python36\\lib\\site-packages']                

  2)sys.path.insert(0,new_path)

 sys.path.insert(0,'/home/mark/diveintopython3/examples')

 

                   3) sys内置模块使用起来和常规模块一样,但无法取得它的源代码,因为sys模块是用C语言编写的

                               add(1,c=2,b=3)

  • 对象:在python中所有的东西都是对象

             查看对象属性:

                   1)dir

                   2)__doc__

                   3)help

 查看某个对象的详细文档用help, 如查看str类型的详细文档可以用help(str)。                         

                       如果文档的内容很多,help会列出全部文档的一部分,并在左下角提示“-- More --”,

                      按Enter键盘会显示更多的信息,要回到命令行交互模式可按Ctrl + C。

  • 代码缩进

          1)python中没有明确的开始和结束

唯一的界定符就是一个冒号(:)和代码自身缩进

  3) python使用回车符分割语句

  • 异常

1)异常可以被处理

2)try...except

3)捕获导入错误

     try:

          import chardet

   except  ImportError:

         chardet=None

 

   #用if 判断

     if chardet:

        # do something 

     else:

       #continue anyway

  

    try:

       from lxml import etree

   except ImportError:

      import xml.etree.ElementTree as etree