欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入python 3 第一份python程序 (2)

程序员文章站 2022-03-06 10:00:26
1)函数声明:以关键字def开头,紧跟函数名称,然后是用括号括起来的参数。多个参数以逗号分割 格式: def 函数名(size,a_kilobyte_is_1024_bytes=True): 语句体 python要求至少一条语句体, pass def test () pass 2)python 函数 ......

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,s2)   # 小括号可以省略,系统会识别为元组数据

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

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

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

                   b=3

                   def  add(a,b):

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

                      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中没有明确的开始和结束

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

          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