Pyouthon中函数参数是引用传递(注意不是值传递)。

对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;

而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。

a += a      !=       a = a + a

 

交换两个数:

方式一:

 

 

 方式二:

 

方式三:python 特有

 

python中函数按照有无参数和返回值分为:

  1.有参数有返回值(常用)

  2.有参数无返回值

  3.无参数有返回值  

  4.无参数无返回值

举例:

*有参数有返回值(常用)

 

#定义函数
def add_num(a,b):
    #把结果相加
    add = a + b
    return add
 #调用函数
result = add_num(100,200)
print("reuslt=%d" % result )

 

 

*有参数无返回值

 

# 0关灯,1开灯
def set_on_off(isOffOn):
    if isOffOn == 0 :
        print("关灯")
    elif isOffOn == 1 :
        print("开灯")      
#调用函数
set_on_off(1)
set_on_off(0)

 

*无参数有返回值

 

# 获取温度
def get_temperature():
    return 24
temperature = get_temperature()
print('当前的温度为:%d'%temperature)

 

*无参数无返回值

 

#打印软件菜单信息
def print_menu():
    print('-'*50)
    print('      名片管理系统1.0')
    print('')
    print('  1.  添加名片')
    print('  2.  删除名片')
    print('  3.  查找名片')
    print('-'*50)
#调用函数
print_menu()    

 

 

在函数中把结果返回给调用者,需要在函数中使用return

函数可返回多个值:

 

 

给函数添加文档说明方式:

1、'说明内容'

2、"说明内容"

3、'''说明内容'''

4、"""说明内容"""

 

给py文件生成帮助文档:

生成py文件,写入函数,最后导入这个py文件(代码中是test),help(test)

查看单个函数的帮助文档,无需导入文件,函数定义好,即可help(函数名)

效果图:

card_infos = []
def menu_infos():
    '''封装程序菜单'''
    print('='*35)
    print('\t名片管理系统1.1')
    print('\t1.新增一个名片')
    print('\t2.删除一个名片')
    print('\t3.修改一个名片')
    print('\t4.查看一个名片')
    print('\t5.显示名片列表')
    print('\t6.退出名片管理系统')
    print('='*35)

def add_card():
    '''封装增加名片功能'''
    global card_infos
    name = input('请输入要增加名片的姓名:')
    qq = int(input('请输入要增加名片的qq:'))
    wechat = input('请输入要增加名片的微信:')
    card_info = {}
    card_info['姓名'] = name
    card_info['QQ'] = qq
    card_info['微信'] = wechat
    card_infos.append(card_info)
    print('名片列表如下:')
    print('姓名\tQQ\t微信')
    for card_info in card_infos:
        print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))

def delete_card():
    '''封装程序删除名片功能'''
    global card_infos
    flag = 0
    select = int(input('输入1根据内容删除;输入2根据下标删除:'))
    if select == 1:
        name = input('请输入要删除名片的姓名:')
        for card_info in card_infos:
            if card_info.get('姓名') == name:
                card_infos.remove(card_info)
                print('删除成功!')
                print('删除后名片列表如下:')
                print('姓名\tQQ\t微信')
                for card_info in card_infos:
                    print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
                flag = 1
                break
            elif flag == 0:
                print('您要删除的名片不存在!')
    elif select == 2:
        index = int(input('请输入要删除名片序号:'))
        if index <= len(card_infos)+1:
            del card_infos[index-1]
            name =  card_infos[index-1]['姓名']
            print('删除成功!')
            print('删除后名片列表如下:')
            print('姓名\tQQ\t微信')
            for card_info in card_infos:
                print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
        else:
            print('您要删除的名片不存在!')
    else:
        print('输入有误!输入1根据内容删除;输入2根据下标删除')

def modify_card():
    '''封装程序修改名片功能'''
    global card_infos
    name = input('请输入要修改名片的姓名:')
    content = input('请输入要修改的内容:')
    new_content = input('请输入新内容:')
    for card_info in card_infos:
        if card_info.get('姓名') == name:
            if content == card_info.get('姓名'):
                card_info['姓名'] = new_content
                print('修改成功!')
                print('删除后名片列表如下:')
                print('姓名\tQQ\t微信')
                for card_info in card_infos:
                    print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
                flag = 1
                break
            elif content == str(card_info.get('QQ')):
                new_content = int(new_content)
                card_info['QQ'] = new_content
                print('修改成功!')
                print('删除后名片列表如下:')
                print('姓名\tQQ\t微信')
                for card_info in card_infos:
                    print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
                flag = 1
                break
            elif content == card_info.get('微信'):
                card_info['微信'] = new_content
                print('修改成功!')
                flag = 1
                print('删除后名片列表如下:')
                print('姓名\tQQ\t微信')
                for card_info in card_infos:
                    print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
                break
            elif flag == 0:
                print('您要修改的名片不存在!')
        else:
            print('您要修改的名片不存在!')

def find_card():
    '''封装程序查看名片的功能'''
    global card_infos
    name = input('请输入要查看名片的姓名:')
    for card_info in card_infos:
        if card_info.get('姓名') == name:
            print('姓名\tQQ\t微信')
            print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
            flag = 1
            break
        elif flag == 0:
            print('您要查看的名片不存在!')

def display_card():
    '''封装程序显示名片功能'''
    global card_infos
    print('名片列表如下:')
    print('姓名\tQQ\t微信')
    for card_info in card_infos:
        print('%s\t%d\t%s' %(card_info['姓名'],card_info['QQ'],card_info['微信']))
    
def main():
    '''程序入口'''
    while True:
        num = int(input('请输入您选择的编号:'))
        if num == 1:
            add_card()
        elif num == 2:
            delete_card()
        elif num == 3:
            modify_card()
        elif num == 4:
            find_card()
        elif num == 5:
            display_card()
        elif num == 6:
            break
        else:
            print('输入有误!请输入正确的编号')

#main()
import test
help(test)

 

posted on 2017-12-02 16:16  落叶虽美只活一世  阅读(1254)  评论(0编辑  收藏  举报
Live2D