python函数用法
一、定义函数
形参:函数完成一项工作所需要的信息,在函数定义时完成
实参:调用函数时传递给函数的信息
二、传递实参
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函数用法的更多相关文章
- Python回调函数用法实例详解
本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...
- Python成长之路第二篇(1)_数据类型内置函数用法
数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...
- python函数的用法
python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint() a() 4.写r ...
- python iter函数用法
iter函数用法简述 Python 3中关于iter(object[, sentinel)]方法有两个参数. 使用iter(object)这种形式比较常见. iter(object, sentinel ...
- python之函数用法setdefault()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setdefault() #D.get(k,d) #说明:k在D中,则返回 D[K], ...
- python之函数用法fromkeys()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法fromkeys() #fromkeys() #说明:用于创建一个新字典,以序列seq ...
- python之函数用法get()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...
- python之函数用法capitalize()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法capitalize() #capitalize() #说明:将字符串的第一个字母变成 ...
- python之函数用法isupper()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isupper() #http://www.runoob.com/python/att ...
随机推荐
- postgresql设置主键
replace(((uuid_generate_v4())::character varying)::text, '-'::text, ''::text)
- C++ 常见面试题目
const作用 (1)可以定义const常量,具有不可变性. (2)便于进行类型检查.(而宏不会进行类型检查). (3)可以保护被修饰的东西,防止意外的修改. (4) 可以节省空间. static作用 ...
- git工具——对比文件的不同
对比工作区和某个版本中文件的不同: (1)继续编辑文件code.txt,在其中添加一行内容: (2)现在要对比工作区中code.txt和head版本中code.txt的不同,使用如下命令: 前面没有出 ...
- 解决SecureCRT中文版"数据库里没找到防火墙'无'"的错误提示
问题描述: 最近从同事那拷贝到一个中文版的SecureCRT,但是每次打开都会有个防火墙的错误提示,“数据库里没找到防火墙“无”.此会话将尝试不通过防火墙进行连接. 出现这个错误的原因是在Secure ...
- 20175226 2018-2019-2 《Java程序设计》第六周学习总结
20175226 2018-2019-2 <Java程序设计>第六周学习总结 教材学习内容总结 内部类与异常类 内部类:Java支持在一个类中定义另一个类(可以是static类) 外嵌类的 ...
- ThinkPHP 2053错误
这个报错是调用存储过程的时候产生的,用的是5.1的代码是根据官方文档写的,我怀疑5.0也有这个问题.去官方查了一下发现不少人有这个问题,但是官方都没有回应过,只能自己动手一步步调了. $center ...
- deepin(debian)下使用Git
Github github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开. 安装git 安装 sudo apt-get install g ...
- vmware克隆虚拟机后无法联网
1.基础知识: 就算是克隆的系统,但是由于物理地址改变了,导致rules文件进行了重新绑定 网卡会从eth0变成eth1(逐渐+1),而且mac地址和uuid也会有变化. 2.解决方法: 2.1编辑e ...
- Typescript---02 变量声明
声明变量: let和const是JavaScript里相对较新的变量声明方式.let在很多方面与var是相似的,但是可以避免在JavaScript里常见一些问题. const是对let的一个增强,它能 ...
- java springboot 大文件分片上传处理
参考自:https://blog.csdn.net/u014150463/article/details/74044467 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时 ...