文档目录:

一、函数体
二、实参与形参
三、返回值
四、举例:函数+while循环
五、举例:列表/元组/字典传递
六、模块与函数的导入

---------------------------------------分割线:正文--------------------------------------------------------

一、函数体

1、定义删除

def green_user():
"""显示简单的问候语"""
print("hello world!")
green_user()

查看结果:

hello world!

2、函数传递信息

def green_user(username):
"""显示简单的问候语"""
print( f"Hello,{username.title()}!" )
green_user("Lucy")

查看结果:

Hello,Lucy!

二、实参与形参

1、概念

def green_user(username):
"""显示简单的问候语"""
print( f"Hello,{username.title()}!" )
green_user("Lucy")

形参:username

实参:"Lucy"

2、位置实参,且支持多次调用

def describe_pet(animal_type,pet_name):
"""显示宠物的信息"""
print(f"I have a {animal_type}")
print(f"My {animal_type}'s name is {pet_name}")
describe_pet('dog','Mary')
describe_pet('cat','Little White')

查看结果:

I have a dog
My dog's name is Mary
I have a cat
My cat's name is Little White

3、实参中将名称和值关联起来

def describe_pet(animal_type,pet_name):
"""显示宠物的信息"""
print(f"I have a {animal_type}")
print(f"My {animal_type}'s name is {pet_name}")
describe_pet(animal_type='dog',pet_name='Mary')

查看结果:

I have a dog
My dog's name is Mary

4、默认值,需放在形参最后

def describe_pet(pet_name,animal_type='cat'):
"""显示宠物的信息"""
print(f"I have a {animal_type}")
print(f"My {animal_type}'s name is {pet_name}")
describe_pet(pet_name='Mary')
describe_pet('Big White')

查看结果:

I have a cat
My cat's name is Mary
I have a cat
My cat's name is Big White

三、返回值

1、返回简直值:return

def get_formatted_name(first_name,last_name):
"""返回全名,并且首字母大写"""
full_name=f"{first_name} {last_name}"
return full_name.title()
name=get_formatted_name("mike","jackson")
print(name)

查看结果:

Mike Jackson

2、实参可选

def get_formatted_name(first_name,last_name,middle_name=''):
"""返回全名,并且首字母大写"""
full_name=f"{first_name} {middle_name} {last_name}"
return full_name.title()
name1=get_formatted_name("mike","jackson",'midddd')
name2=get_formatted_name("mike","jackson")
print(name1)
print(name2)

3、返回字典

def build_person(first_name,last_name):
"""返回一个字段"""
persion={'first':first_name,'last':last_name}
return persion
dicttest1=build_person('xiao','long')
print(dicttest1)

查看结果:

{'first': 'xiao', 'last': 'long'}

四、举例:函数+while循环

def get_formatted_name(first_name,last_name):
"""返回全名,并且首字母大写"""
full_name=f"{first_name} {last_name}"
return full_name.title()
while True:
print("Please tell me your name:")
print("(enter 'q' at any time to quit)")
f_name=input("First name:")
if f_name=='q':
break
l_name=input("Last name:")
if l_name=='q':
break
formatted_name=get_formatted_name('mike','jackson')
print(f"\nhello,{formatted_name}!")

查看结果:

Please tell me your name:
(enter 'q' at any time to quit)
First name:mike
Last name:jackson hello,Mike Jackson!
Please tell me your name:
(enter 'q' at any time to quit)
First name:tom
Last name:q

五、举例:列表/元组/字典传递

1、传递列表

def greet_users(names):
"""向列表中的每位用户发出简单的问候"""
for name in names:
msg=f"Hello,{name.title()}!"
print(msg)
username=['bk','anna','tom','mary']
greet_users(username)

查看结果:

Hello,Bk!
Hello,Anna!
Hello,Tom!
Hello,Mary!

2、在函数中修改列表

unconfirmed_users=['alice','brian','candace']
confirmed_users=[] def confirmed(unconfirmed_users,confirmed_users):
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print( f"Verfying users:{current_user.title()}" )
confirmed_users.append( current_user )
# 显示所有验证的用户
def print_confirmed_users(confirmed_users):
print( "\nThe following users have been confirmed!" )
for confirm_user in confirmed_users:
print( confirm_user.title() ) confirmed(unconfirmed_users,confirmed_users)
print_confirmed_users(confirmed_users)
print(unconfirmed_users)

查看结果:

Verfying users:Candace
Verfying users:Brian
Verfying users:Alice The following users have been confirmed!
Candace
Brian
Alice
[]

3、优化:函数修改原列表

#将列表的副本传递给函数
unconfirmed_users=['alice','brian','candace']
confirmed_users=[] def confirmed(unconfirmed_users,confirmed_users):
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print( f"Verfying users:{current_user.title()}" )
confirmed_users.append( current_user )
# 显示所有验证的用户
def print_confirmed_users(confirmed_users):
print( "\nThe following users have been confirmed!" )
for confirm_user in confirmed_users:
print( confirm_user.title() ) confirmed(unconfirmed_users[:],confirmed_users)
print_confirmed_users(confirmed_users)
print(unconfirmed_users)

查看结果:原列表不会修改

Verfying users:Candace
Verfying users:Brian
Verfying users:Alice The following users have been confirmed!
Candace
Brian
Alice
['alice', 'brian', 'candace']

4、传递任意数量的实参(元组)

#*号可以生成一个空元组,封装接收的所有值
def make_pizza(*toppings):
"""打印顾客点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms','chesse','green peppers')

查看结果:

('pepperoni',)
('mushrooms', 'chesse', 'green peppers')

5、结合使用位置实参和任意数量实参

def make_pizza(size,*toppings):
"""打印顾客点的所有配料"""
print(f"Making a {size}-inch pizza with the folowing toppings")
for topping in toppings:
print(f'-{topping}')
make_pizza(16,'pepperoni')
make_pizza(12,'mushrooms','chesse','green peppers')

查看结果:

Making a 16-inch pizza with the folowing toppings
-pepperoni
Making a 12-inch pizza with the folowing toppings
-mushrooms
-chesse
-green peppers

6、使用任意数量的关键字实参(字典)

#**可以生成一个空字典
def build_profile(first,last,**user_info):
"""创建一个字典,其中包含有关用户的信息"""
user_info['first_name']=first
user_info['last_name']=last
return user_info
user_profile=build_profile('albert','master',location='princeton',field='physics',number=1)
print(user_profile)

查看运行结果:

{'location': 'princeton', 'field': 'physics', 'number': 1, 'first_name': 'albert', 'last_name': 'master'}

六、模块与函数的导入

1、导入模块

import test04_function
test04_function.make_pizza(13,'prpperono')
test04_function.make_pizza(10,'prpperono','cheese','mushrooms')

查看结果:

Making a 13-inch pizza with the folowing toppings
-prpperono
Making a 10-inch pizza with the folowing toppings
-prpperono
-cheese
-mushrooms

2、导入特定的函数

from test04_function import make_pizza
make_pizza(10,'prpperono','cheese','mushrooms')

3、使用as给函数指定别名

from test04_function import make_pizza as mp
mp(10,'prpperono','cheese','mushrooms')

4、使用as给模块执行别名

import test04_function as pizza
pizza.make_pizza(10,'prpperono','cheese','mushrooms')

5、导入模块中的所有函数

from test04_function import *

python进阶(5)--函数的更多相关文章

  1. Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器

    Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: ​ 1. 可以在局部作用域声明一 ...

  2. Python进阶(二)----函数参数,作用域

    Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: ​ 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...

  3. Python进阶(一)----函数

    Python进阶(一)----函数初识 一丶函数的初识 什么函数: ​ 函数是以功能为导向.一个函数封装一个功能 函数的优点: ​ 1.减少代码的重复性, ​ 2.增强了代码的可读性 二丶函数的结构 ...

  4. Python进阶07 函数对象

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函数也是一个对象 ...

  5. Python进阶04 函数的参数对应

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经接触过函数(function)的参数(arguments)传递.当时我们根 ...

  6. python进阶之函数和类内建魔法属性

    前言 关于对象的魔法方法我们已经讲得太多,但是对于类或函数内建的魔法属性和功能我们涉及较少,下面系统了解一下类和函数的内建属性. 查看内建属性 class Person(object): pass d ...

  7. Python 进阶 之 函数对象

    Python的世界里,万物皆对象,函数当然也是: 首先要定义一个函数: def add(a,b): print a+b 其次定义一个字典来引用该函数: dic = {"add":a ...

  8. Python进阶-Ⅷ 匿名函数 lambda

    1.匿名函数的引入 为了解决那些功能很简单的需求而设计的一句话函数 def func(i): return 2*i # 简化之后 func = lambda i:2*i #todo 其中:func是函 ...

  9. Python进阶04函数的参数对应

    我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的 参数传递方式. 回忆一下位置传递: def f(a,b,c): return ...

  10. python 进阶篇 函数装饰器和类装饰器

    函数装饰器 简单装饰器 def my_decorator(func): def wrapper(): print('wrapper of decorator') func() return wrapp ...

随机推荐

  1. [洛谷P8494] [IOI2022] 最罕见的昆虫

    [IOI2022] 最罕见的昆虫 题目描述 Pak Blangkon 的房子四周有 \(N\) 只昆虫,编号为 \(0\) 至 \(N-1\).每只昆虫有一个类型,以从 \(0\) 至 \(10^9\ ...

  2. [ABC265C] Belt Conveyor

    Problem Statement We have a grid with $H$ horizontal rows and $W$ vertical columns. $(i, j)$ denotes ...

  3. tomact

    常见的java相关的web服务器软件:   *webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费.   *webSphere:IBM公司,大型的JavaEE ...

  4. MySQL调优的一些总结

    SQL优化可以从那几个方面去优化 1.基本写法优化: 1.少使用select * ,尽量使用具体字段: 2.对于条件来说等号之类两边的字段类型要一致,字符串不加单引号索引会失效: 3.尽量少使用Ord ...

  5. vmware虚拟机 linux 本地yum源,网卡配置ens33,防火墙selinux

    1.挂载镜像文件,CentOS-7-x86_64-DVD-1804.iso,并且要处于连接状态 #光盘挂载至/mntmount /dev/sr0 /mnt #备份yum源文件cd /etc/yum.r ...

  6. NTP时间服务器优先级介绍

    先思考一个问题:当一个客户端配置向多个NTP时间服务器校时,此时客户端优先向哪个时间服务器同步时间呢? 一个完整的NTP校时请求分四步: 1.客户端向服务器发起校时请求 2.服务器收到客户端发送的校时 ...

  7. MinIO的简单使用

    MINIO介绍 什么是对象存储? 以阿里云OSS为例: 对象存储服务OSS(Object Storage Service)是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处 ...

  8. 正则表达式之grep与sed用法

    一.grep和egrep的用法 (一)grep用法 grep是根据给出的条件查找特定的字符.用单引号查找指定的单词,图1.1.grep后面可选项用**-n显示查找的行数:-i不区分大小写查找图1.2 ...

  9. win10 安装 AutoCAD

    有些人在 win10 系统下 安装 AutoCAD 会有些小问题,不要担心,根据下面这些图片就可以解决你的问题 答案很简单,就是安装.NET Framework3.5,这里提供一种安装方法供大家参考: ...

  10. Xshell与Xftp安装与使用

    Xshell与Xftp安装 软件安装:官网或者应用商店 安装结束 nslicense.dll替换 下载文件 使用 登录 双击刚刚建立的连接 表示建立成功 点击文件传输 右边就是服务器的文件,左边就是本 ...