007 python语法_003 函数/类/模块

 

 

 

'''
时间:2018/10/11
目录: 
  一: 函数
          1 定义函数
      2 空函数
      3 参数 - 检查
      4 参数 - 返回多个值
      5 参数 - 默认参数
      6 参数 - 可变参数
      7 参数 - 关键字参数
      8 参数 - 命名关键字参数   二: 类 1 定义 2 初始化
      3 继承   三: 模块
      1 使用模块
      2 自编模块
'''

 

一: 函数
  1 定义函数

#coding:utf-8

def myAbs(nNum):
    if nNum >= 0:
        return nNum
    else:
        return -nNum

nNum = myAbs(33)
print(nNum)

nNum = myAbs(-33)
print(nNum)
33
33

  

  2 空函数

# coding:utf-8
def nop():
    pass    #pass作占位符,还没想好写代码

print(nop())
print(type(nop()))
None
<class 'NoneType'>

 

   3 参数 - 检查

#coding:utf-8

def myAbs(nNum):
    if not isinstance(nNum, (int, float)):      # 类型检查
        raise TypeError('bad operand type')     # 错误提示
    if nNum >= 0:
        return nNum
    else:
        return -nNum


nNum = myAbs(33)
print(nNum)

nNum = myAbs(-33)
print(nNum)

nNum = myAbs("33")
print(nNum)
Traceback (most recent call last):
33
  File "D:/ProgramTools/PyCharm 5.0.4/PycharmProject/StudyJson/StudyJson/Study001.py", line 18, in <module>
33
    nNum = myAbs("33")
  File "D:/ProgramTools/PyCharm 5.0.4/PycharmProject/StudyJson/StudyJson/Study001.py", line 5, in myAbs
    raise TypeError('bad operand type')     # 错误提示
TypeError: bad operand type

 

  4 参数 - 返回多个值

# coding:utf-8
def Test(x, y):
    dictTest = {
        "name": "ZS",
        "age": y + 1,
        "sex": "m"
    }
    return x, y, x + y, dictTest

nNum = Test(1, 2)
print(nNum)
print(type(nNum))

i1, i2, i3, dictTest = Test(1, 2)
print(i1)
print(type(i3))
print(i2)
print(type(i3))
print(i3)
print(type(i3))
print(dictTest)
print(type(dictTest))
(1, 2, 3, {'name': 'ZS', 'age': 3, 'sex': 'm'})
<class 'tuple'>
1
<class 'int'>
2
<class 'int'>
3
<class 'int'>
{'name': 'ZS', 'age': 3, 'sex': 'm'}
<class 'dict'>

 

  5 参数 - 默认参数

# coding:utf-8

def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city, end="\n\n")

enroll('Bob', 'M', 7)
enroll('Adam', 'M', 8, city='Tianjin')
enroll('Adam', 'M', city='Tianjin')     # 当不按顺序提供部分默认参数时,需要把参数名写上。
name: Bob
gender: M
age: 7
city: Beijing

name: Adam
gender: M
age: 8
city: Tianjin

name: Adam
gender: M
age: 6
city: Tianjin

 

  6 参数 - 可变参数

# coding:utf-8

def calc(*nNumbers):        # 可变参数 - 参数前加个*号, 定义tuple参数
    print(type(nNumbers))   # 显示类型
    nSum = 0
    for nLoop in nNumbers:
        nSum = nSum + nLoop
    return nSum


nNums = (1, 2)
nResult = calc(*nNums)  # *nNums : tuple类型  - 作为可变参数
print(nResult)

nNums = [1, 2, 5]
nResult = calc(*nNums)  # *nNums : list类型  - 作为可变参数
print(nResult)
<class 'tuple'>
3
<class 'tuple'>
8

 

  7 参数 - 关键字参数

# coding:utf-8
def person(name, age, **kw):
    print("name:", name, "age:", age, "other:", kw)

person("Michael", 30)
person("Bob", 35, city = "BeiJing")
person(age=45, name="Adam", gender='M', job="Engineer") # 用户注册的,除了用户名和年龄是必填,其他都是可选项,

extra = {
    "city": "Beijing",
    "job":"Engineer"}
person("Jack", 24, city=extra["city"], job=extra["job"])
person("Jack", 24, **extra)                                 # 同上简写
name: Michael age: 30 other: {}
name: Bob age: 35 other: {'city': 'BeiJing'}
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

 

  8 参数 - 命名关键字参数

# coding:utf-8
def person(name, age, *args, city, job):
    print('name:', name, 'age:', age, 'city:', city, 'job:', job)

person("Bob", 35, city = "BeiJing", job="Engineer")

# 错误用法
# person("Michael", 30)                                   # TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'
# person("Bob", 35, "BeiJing",  "Engineer")                          # TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'
# person(age=45, name="Adam", city = "BeiJing", job="Engineer", gender='M')  # TypeError: person() got an unexpected keyword argument 'gender'
name: Bob age: 35 city: BeiJing job: Engineer

 

二: 类

  1 定义

# coding:utf-8
class A(object):
    def add(self, a, b):
        return a + b

count = A()
print(count.add(3, 5))
8

 

  2 初始化

# coding:utf-8
class A(object):
    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b


count = A("4", 5)
print(count.add())
9

 

  3 继承

# coding:utf-8

class A():
    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def print(self):
        print("a = %d, b = %d\n" %(self.a, self.b))


class B(A):
    def sub(self, a, b):
        self.a = self.a - a
        self.b = self.b - b

b = B(4, 5)
b.print()
b.sub(1, 2)
b.print()
a = 4, b = 5

a = 3, b = 3

 

三: 模块

  1 使用模块

# coding:utf-8

import sys

print("\n\nPython路径是: ", sys.argv)
Python路径是:  ['D:/ProgramTools/PyCharm 5.0.4/PycharmProject/StudyJson/StudyJson/Study001.py']

 

  2 自编模块

# coding:utf-8  # .py文件 - 使用UTF-8编码

"test module"               # 文档注释
__author__ = 'HuaFanChen'   # 作者名称


def myAbs(nNum):
    if not isinstance(nNum, (int, float)):        # 类型检查
        raise TypeError('bad operand type')    
    if nNum >= 0:
        return nNum
    else:
        return -nNum
        

1 : 编写一个abstest.py文件,内容如上。

 

1 : 把文件放到pyhton库中。

 

# coding:utf-8

from abstest import myAbs

nNum = myAbs(23)
print(nNum)

nNum = myAbs(-33)
print(nNum)
23
33

1 :调用刚才编写abstest文件中的myAbs函数。

 

posted @ 2018-10-11 22:04  火焰马  阅读(249)  评论(0编辑  收藏  举报