一、定义函数

形参:函数完成一项工作所需要的信息,在函数定义时完成

实参:调用函数时传递给函数的信息

二、传递实参

1.位置实参:每个实参都关联到函数定义中的一个形参

示例: def describe_pet(animal_type,pet_name):
print("My "+ animal_type+"'s is "+pet_name.title()+".") describe_pet('hamster','harry')

2.关键字实参是传递给函数的名称-值对 (直接在实参中将名称和值关联起来,这样无需考虑函数调用中的实参顺序)

def describe_pet(animal_type,pet_name):
print("My "+ animal_type+"'s is "+pet_name.title()+".")
describe_pet(animal_type='hamster',pet_name='harry')

3.默认值:编写函数时,可给每个形参指定默认值。在调用函数时给形参指定了实参值时,python将使用指定实参值;否则,将使用形参的默认值。

def describe_pet(pet_name,animal_type='dog'):
print("My "+ animal_type+"'s is "+pet_name.title()+".") 调用式1: describe_pet('hamster') 使用形参默认值 调用式2: describe_pet(pet_name='harry',animal_type='hamster')
显示的给animal_type提供了实参,因此python忽略了形参的默认值

注意:使用默认值时,在形参列表中必须先列出没有默认值的形参,在列出有默认值得形参,这让python能正确解读位置实参

4.等效的函数调用:指定实参时可以使用位置方式,也可以使用关键字方式

def describe_pet(pet_name,animal_type='dog'):
print("My "+ animal_type+"'s is "+pet_name.title()+".")
#一条命为willie的小狗
describe_pet('willie')
describe_pet(pet_name='willie') #一只名为Harry的仓鼠
describe_pet('harry','hamster') --位置实参
describe_pet(pet_name='harry',animal_type='hamster')--关键字实参
describe_pet(animal_type='hamster',pet_name='harry')

三、返回值: return语句将值返回到调用函数的代码行

1.返回简单的值

2.让实参变成可选的

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
reutn full_name
musician=get_formatted_name('zilong','zhou')
print(musician) musician=get_formatted_name('xifeng','wang','lee')
print(musician)
为让中间名变成可选,可给形参middle_name一个默认值-空字符串,并在用户没有提供中间名时不使用这个实参

3.返回字典:函数可返回任何类型的值,包括列表和字典等较为复杂的数据结构

def build_person(first_name,last_name,age='')
person={'first_name':first_name,'last_name':last_name}
  if age:
    age=32
retun person
musician=build_person('yufang','ke',20)
print(musician)

4.将函数与while循环结合使用

def get_formatted_name(first_name,last_name)
full_name=first_name+' '+last_name
retun full_name while true:
print("please tell me your name|enter q to quit ")
first_name=input("first name: ")
if first_name == 'q':
break;
last_name=input("last name: ")
if last_name == 'q':
break;
formatted_named=get_formatted_name(first_name,last_name)
print(formatted_named)

四、传递列表

1.在函数中修改列表:3D打印模型公司需要打印的设计存储在一个列表中,打印后移到另一个列表中

def print_models(unprinted_designs,completed_models):
while unprinted_designs:
current_design=unprinted_designs.pop()
completed_models.append(current_design) def show_completed_models(completed_models):
print("the following models have been printed: ")
for completed_model in completed_models:
print(completed_model)
unprinted_designs=['iphone case','robot pendant','dodecahedron']
completed_models=[]
print_models(unprinted_designs,completed_models)
show_completed_models(completed_models)

2.禁止函数列表修改(源代码参--在函数中修改列表)

print_models(unprinted_designs[:],completed_models)

unprinted_designs[:]获得列表unprinted_designs的副本,而不是列表unprinted_designs的本身,列表completed_models也将打印包含打印好的列表名称,但函数所做的修改不会影响到列表unprinted_designs

五、传递任意数量的实参

1.简单示例

制作比萨时需要接受很多配料,但无法预先确定顾客要多少配料,下面形参toppings能够接受任意多个实参
def make_pizza(*toppings):
print(toppings)
make_pizza('peper')
make_pizza('peper','extra cheese')

2.结合使用位置实参和任意数量实参

def make_pizza(size,*toppings):
print("making a"+str(size)+"-inch pizza with the following toppings: ")
for topping in toppings:
print("-"+topping)
make_pizza(,'peper')
make_pizza(,'peper','extra cheese')

3.使用任意数量的关键字实参:将函数编写能够接受任意数量的键-值对--调用语句提供多少就接受多少

build_profile()函数接受名和姓,同事还接受任意数量的关键字实参
def build_profile(first,last,**user_infos):
profile={}
profile['first_name']=first
profile['last_name']=last
for key,value in user_infos:
profile[key]=value
retun profile user_profile=build_profile('albert','eisnst',location='princeton',field='physics')
print(user_profile)

六、将函数存储在模块中

函数的优点之一是使用它们可以和主程序分离;通过给函数指定描述性名称,可让主程序容易理解得多;你还可以将函数存储在称为模块的独立文件中,再将模块导入到主程序中。

import语句允许在当前运行的程序文件中使用模块中的代码

6.1导入整个模块

def make_pizza(size,*toppings):
print("making a"+str(size)+"-inch pizza with the following toppings: ")
for topping in toppings:
print("-"+topping)

接下来,我们在pizza.py文件所在目录创建另一个名为making_pizzas.py文件,这个文件导入刚创建的模块,再调用mkae_pizza()函数两次

import pizza
make_pizza(16,'peper')
make_pizza(15,'peper','extra cheese')
代码行import pizza让Python打开文件pizza.py,并将pizza.py文件中所有函数都复制到这个程序中

6.2 导入特定的函数

导入任意数量函数方法:from module import function_name;

对于前面making_pizzas.py示例,如果你只想导入使用的函数,代码将类似下面这样:

from pizza import make_pizza
make_pizza(16,'peper')
make_pizza(15,'peper','extra cheese')

6.3使用as给函数重命名

指定别名通用语法如下:
from module_name import function_name as fn
对于前面making_pizzas.py示例:
from pizza import make_pizza as mp
make_pizza(16,'peper')
make_pizza(15,'peper','extra cheese')

6.4使用as给模块指定别名

import pizza as p
make_pizza(16,'peper')
make_pizza(15,'peper','extra cheese')
给模块指定别名的通用方法如下:
import module_name as mn

6.5 导入模块中所有函数

使用*运算符可让python导入模块中的所有函数:

from pizza import *
make_pizza(16,'peper')
make_pizza(15,'peper','extra cheese')

6.6 函数编写指南

每个函数首先给函数指定描述性名称,且只在其中使用小写字母和下划线,并简要地阐述其功能注释,该注释应紧跟函数定义的后面

python函数用法的更多相关文章

  1. Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  2. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  3. python函数的用法

    python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint()    a() 4.写r ...

  4. python iter函数用法

    iter函数用法简述 Python 3中关于iter(object[, sentinel)]方法有两个参数. 使用iter(object)这种形式比较常见. iter(object, sentinel ...

  5. python之函数用法setdefault()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setdefault() #D.get(k,d) #说明:k在D中,则返回 D[K], ...

  6. python之函数用法fromkeys()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法fromkeys() #fromkeys() #说明:用于创建一个新字典,以序列seq ...

  7. python之函数用法get()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...

  8. python之函数用法capitalize()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法capitalize() #capitalize() #说明:将字符串的第一个字母变成 ...

  9. python之函数用法isupper()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isupper() #http://www.runoob.com/python/att ...

随机推荐

  1. idea工具的快捷方式

    用idea默认的快捷键 Ctrl+~,快速切换方案(界面外观.代码风格.快捷键映射等菜单) Shift+Enter,向下插入新行 Ctrl+F,查找文本 Ctrl+R,替换文本 Ctrl+I,实现方法 ...

  2. 数据库运维平台~Yearning测试与总结

    一 部署   1 docker-compose up -d 即可非常方便   2 mysql安装   3 inception安装二 默认账号   默认用户admin 密码: Yearning_admi ...

  3. 2018-2019-2 《网络对抗技术》 Exp0 Kali安装 20165221 Week1

    2018-2019-2 <网络对抗技术> Exp0 Kali安装 20165221 Week1 安装Vmware 上学期已经安装过,不再赘述. 如需安装,可参考如何安装vmware 下载v ...

  4. 2019年一次java知识点总结

    java基础 数据类型 集合与数据结构 关键字(static,rty ...) IO和网络 多线程(并发与锁,死锁) 异常 简单算法,复杂度 JVM 类加载 java内存模型 对象监听器字节码 垃圾回 ...

  5. Power BI行级别安全性(数据权限管理)

    自从PowerBI 的DAX 函数 支持username() 或 userprincipalname()的函数后,我们就可以在Power BI中实现根据用户的行级数据权限的控制. username() ...

  6. MVC 前端页面ViewData参数名不区分大小写

    项目中实际应用: 后台赋值时传的是:ViewData["CheckedSystemMenu"], 前台取值时:ViewData["checkedsystemmenu&qu ...

  7. xPath Helper插件

    xPath Helper插件 xPath helper是一款Chrome浏览器的开发者插件,安装了xPath helper后就能轻松获取HTML元素的xPath,程序员就再也不需要通过搜索html源代 ...

  8. 基于物品的协同过滤item-CF 之电影推荐 python

    推荐算法有基于协同的Collaboration Filtering:包括 user Based和item Based:基于内容 : Content Based 协同过滤包括基于物品的协同过滤和基于用户 ...

  9. Linux下系统如何监控服务器硬件、操作系统、应用服务和业务

    1.Linux监控概述       Linux服务器要保证系统的高可用性,需要实时了解到服务器的硬件.操作系统.应用服务等的运行状况,各项性能指标是否正常,需要使用各种LINUX命令.做到自动化运维就 ...

  10. 《剑指offer》数字在排序数组中出现的次数

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结: