博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数基础
阅读量:5313 次
发布时间:2019-06-14

本文共 3949 字,大约阅读时间需要 13 分钟。

函数——function

1. 如何定义一个简单的函数

定义函数时,使用def(define)进行定义

"""定义了一个简单的问候用户的无参函数"""def greet_user():    print('hello user!')"""定义一个有参数的函数"""def greet_user(username):    print('hello' + username.title())def main():    username = 'zhang3'    greet_user()    greet_user(username)if __name__ == '__main__':    main()

大家有时候会形参与实参不分,有时候会将函数定义中的变量称为实参,函数调用的变量称为形参,不要大惊小怪!

2. 传递实参的方式

传递实参大致分为三种:位置实参,关键字实参,默认实参

def describe_pet(animal_type, pet_name):    print('\n I have a ' + animal_type + '.')    print("My " + animal_type + "'s name is" + pet_name.title() + '.')
  • 位置实参(顺序很重要)

python在进行函数调用时,会将函数调用的实参一一传递给形参,最简单的调用方式就是基于实参的顺序,这种关联方式称之为位置实参

describe_pet("dog", "xiao")
  • 关键字实参

使用关键字实参时,请务必准确的指定函数定义中的形参名

关键字实参时传递给函数的名称-值对,无须考虑函数调用的顺序,清楚的指出了函数调用中各个值的用途

describe_pet(animal_type="dog", pet_name="xiao")describe_pet(pet_name="xiao", animal_type="dog")
  • 默认值

使用默认值时,在形参列表中必须先列出无默认值的的形参,再列出有默认值的实参,能够让Python正确的解读位置实参

3. 函数返回值

函数并非总是显示输出,相反它可以处理数据,返回一个或一组值,函数返回的值称为返回值。

在python中使用return语句来完成

  • 返回简单的值
def formatted_name(first_name, last_name):    """返回整洁的名字"""    full_name = first_name + " " + last_name    return full_name.title()def main():    name = formatted_name("s", "zj")    print(name)if __name__ == '__main__':    main()
  • 让实参变成可选的

    def get_formatted_name(first_name, last_name, middle_name=''):    """返回整洁的名字"""    if middle_name:        full_name = first_name + ' ' + middle_name + ' ' + last_name    else:        full_name = first_name + ' ' + last_name    return full_name.title()

    python将非空字符串解读为True

  • 返回字典

def bulid_person(first_name, last_name, age=''):    """用字典返回一个人的数据"""    person = {'first': first_name, 'last': last_name}    if age:        person['age'] = age    return person

4. 传递列表

  • 在函数中修改列表

问题:一家3D打印公司,需要将打印的设计存储在一个列表中,打印后的模型移到另一个列表中,并将打印结果显示到屏幕

"""定义两个函数,一个完成打印操作,一个展示已打印的列表"""def printed_models(unprinted_designs, completed_models):    """负责完成打印操作"""    while unprinted_designs:        current_design = unprinted_designs.pop()        print('Printing models: ' + current_design)        completed_models.append(current_design)def show_completed_models(completed_models):    print('\nThe following models have been pirnted: ')    for completed_model in completed_models:        print(completed_model)def main():    unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']    completed_modles = []    print_models(unprinted_designs, completed_modles)    show_completed_models(completed_modles)if __name__ == '__main__':    main()# 运行结果:"""Printing design: dodecahedronPrinting design: robot pendantPrinting design: iphone caseThe following models have been printed: dodecahedronrobot pendantiphone case"""
  • 禁止在函数中修改列表

    function_name(list_name[:])

切片表示法[:],创建列表的副本

5. 传递任意数量的实参

形参名 *toppings 中的星号,让python创建一个空的元组,并将所有的值封装的元组中,因此可以传递任意数量的实参。

def make_pizza(*toppings):    print(toppings)make_pizza('x')make_pizza('x', 'y', 'z')

形参名 **user_info中的两个星号让python创建一个名为:user_info的空字典,并将受到的键-值对封装起来。

def build_profile(first, last, **user_info):    """创建一个字典,其中包含我们知道的有关用户的一切"""    profile = {}    profile['first_name'] = first    profile['last_name'] = last    for key, value in user_info.items():        profile[key] = value    return profile

6. 将函数存储在模块中

​ 通过将函数存储在称为模块(moudle)的独立的文件中,隐藏程序代码的细节,将重点放在程序的高层逻辑上,能够重用函数,再将模块导入(import)到程序中。

​ 要想让函数是可导入的,得先创建模块,模块是以.py结尾的文件,包含要导入的程序中的代码。

  • 导入整个模块

    导入模块的名字,可在程序中使用该模块的所有函数

    import moudle_name

    使用模块中的函数

    moudle_name.function_name()

  • 导入特定的函数

    from moudle_name import function_name

    通过逗号分隔函数名,可根据需要导入任意数量的函数

    from moudle_name import function_0, function_1, function_2,....

  • 使用as给模块起别名

如果要导入的函数名称与当前程序中的名称冲突,或者导入的函数名称过长,可指定简短而独一无二的别名——函数的另一个名称,类似于外号。

from moudle_name import function_name as fn

  • 使用as给函数起别名

    import moudle_name as mn

  • 导入模块中所有的函数

使用星号(*****)运算符可让python导入模块中的所有函数,最佳的做法是导入你需要的函数,或者导入模块,再使用句点表示法

from moudle_name import *

7. 函数编写指南

编写函数时,应牢记几个细节

  • 应给函数指定描述性名称,做到见名知意,且只在其中使用小写字母和下划线
  • 在函数的定义的后面都应有一定的文档字符串描述性语言,阐述函数的功能,
  • 函数定义中,给形参指定默认值时,等号两边不要有空格
  • 函数调用时,使用关键字实参时,等号两边不要有空格

转载于:https://www.cnblogs.com/blog-S/p/11252670.html

你可能感兴趣的文章
和小哥哥一起刷洛谷(1)
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
判断9X9数组是否是数独的java代码
查看>>