萌新向Python数据分析及数据挖掘 第一章 Python基础 第八节 函数

第一章 Python基础

第八节 函数

定义函数

函数 其实就可以理解为外挂,把一些常用的、重复率比较多你又不想重复写的东西写进函数,加上开关实现简化操作

举个简单的例子

1 def greet_user(username):
2     #定义一个叫做“迎接用户”的外挂,让他能直接打印一个问候语,括号里面是函数需要输入的东西,也就是个性化的东西
3     """先是简单的问候语"""
4     print("Hello! " + username.title() + "!")# 打印hello!+ 用户输入的用户名的首字母大写形式
5 greet_user("mike") #mike使用外挂 一次


由上所示,关键字def定义一个函数,后面跟着函数名以及用来输入参数的括号,定义以冒号结束,而print("Hello!")为其函数体。

调用函数时,则依次指定函数名以及用括号括起的必要信息,如参数等。

实参和形参

在函数greet_user(username)的定义中,变量username是一个形参。形参是一个函数完成其工作所需的一个参数。

在代码greet_user("mike")中,值"mike"是一个实参。实参是调用函数时传递给函数的参数。

调用greet_user("mike")函数时,我们将实参"mike"传递给了函数greet_user(),这个值被存储在形参username。

传递实参

位置实参:调用函数时,必须将函数调用中的每个实参都采用基于实参顺序的方式关联到函数定义中的一个形参中。

关键字实参:调用函数时,直接传递给函数名称-值对。此时不用考虑实参顺序。


默认值:给形参指定默认值。在调用函数中给形参提供了实参时,则用指定的实参值。如果没有提供则使用形参默认值。

PS:使用默认值时,在形参列表中必须列出没有默认值的形参,再列出有默认值的实参。才能让python正确解读位置实参。



返回值

返回简单值


1 def get_formatted_name(first_name, last_name):#输入姓和名
2     full_name = first_name + ‘ ‘ + last_name# 拼接
3     return full_name.title()#返回拼接后的首字母大写形式
4 musician = get_formatted_name(‘jimi‘, ‘hendrix‘)
5 print(musician)

我们可以使用return语句在函数中返回值。

让实参可选

 1 def get_formatted_name(first_name, last_name, middle_name=‘‘):
 2     #当有参数可有可无的时候,可以给他一个默认值,如果用户没有输入就用默认值
 3     if middle_name:#如果有输入默认值,则三个拼接
 4         full_name = first_name + ‘ ‘ + middle_name + ‘ ‘ + last_name
 5     else: #如果没有输入默认值,则姓名拼接
 6         full_name = first_name + ‘ ‘ + last_name
 7     return full_name.title()
 8 musician = get_formatted_name(‘jimi‘, ‘hendrix‘)
 9 print(musician)
10 musician = get_formatted_name(‘john‘, ‘hooker‘, ‘lee‘)
11 print(musician)


如上所示,使用if条件语句,并将实参作为判断条件即可让实参可选。

传递列表

将列表传递给函数后,不仅可以遍历列表,还能修改列表,并且这种修改时永久性的。 如果要禁止函数修改列表,可以传递列表的副本,比如:function_name(list_name[:])

传递任意数量的实参

1 def make_pizza(*toppings):#用户可以输入多个pizza配料,但都是属于披萨配料,一起作为一个元组被函数使用
2     print(toppings)
3 make_pizza(‘pepperoni‘)
4 make_pizza(‘mushrooms‘, ‘green peppers‘, ‘extra cheese‘)

形参名*toppings中的星号表示创建一个名为 toppings 的空元组,并把所有收到的值封装在这个元组中。我们还可以使用循环语句将所有值打印出来。

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

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量的实参的形参放在最后。这样,python会先匹配位置实参和关键字实参,并把余下的实参都收集到最后一个形参中。

 

1 def make_pizza(size, *toppings):#做披萨程序,输入尺寸和配料(可多种)
2     print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")
3     for topping in toppings: #把所有的配料打印出来
4         print("- " + topping)
5 make_pizza(16, ‘pepperoni‘)
6 make_pizza(12, ‘mushrooms‘, ‘green peppers‘, ‘extra cheese‘)



使用任意数量的关键字实参

 1 def build_profile(first, last, **user_info):#建档程序,需要输入姓、名、和用户信息(字典)
 2     profile = {}#建立一个空字典
 3     profile[‘first_name‘] = first #用‘first_name‘标签存放用户输入的名
 4     profile[‘last_name‘] = last#用‘last_name‘标签存放用户输入的姓
 5     for key, value in user_info.items():
 6         #把用户输入的字典形式的用户信息照抄,
 7         #这里 如果用户信息里面有一个键值对和‘first_name‘或‘last_name‘一样,
 8         #那么,用户资料里的姓名将被替代,大家可以尝试一下
 9         profile[key] = value
10     return profile
11
12 user_profile_1 = build_profile(‘albert‘, ‘einstein‘,location=‘princeton‘,field=‘physics‘)
13 user_profile_2 = build_profile(‘albert‘, ‘einstein‘,first_name=‘princeton‘,field=‘physics‘)
14 print(user_profile_1)
15 print(user_profile_2)


形参**user_info中的两个星号表示创建一个名为user_info的空字典,并将收到的所有名称-值对都封装到这个字典中。

将函数存储在模块中

导入整个模块

模块时扩展名为.py的文件,包含要导入到程序中的代码。使用import语句可以将模块导入。把文件放在同一个文件夹里面最方便。

#pizza.py

1 def make_pizza(size, *toppings): #做披萨程序,输入尺寸和配料(可多种)
2     print("\nMaking a " + str(size) +"-inch pizza with the following toppings:")
3     for topping in toppings:
4         print("- " + topping)


 
#making_pizzas.py

1 import pizza #导入pizza模块(已经写好的外挂)
2 pizza.make_pizza(16, ‘pepperoni‘) #导入后直接使用
3 pizza.make_pizza(12,‘mushrooms‘, ‘green peppers‘, ‘extra cheese‘)


如果导入的是整个模块,调用的时候就要指定模块名:module_name.function_name()

导入特定的函数

导入模块中特定的函数,可以使用:from module_name import function_name

用逗号分隔函数名,可导入任意数量函数:from module_name import function_0, function_1, function_2

这时候调用函数,无需使用句点,直接指定函数名,因为我们在import语句中显示导入了函数。

使用as给函数指定别名

为了防止冲突,或者函数名太长,可指定一个独一无二的别名,函数的另外一个名称,通用语法为:from module_name import function_name as fn

导入模块中的所有函数

使用星号(*)运算符可以导入模块中的所有函数,此时不用使用句点来调用函数。不过最好不要这样。语法为:from module_name import *

原文地址:https://www.cnblogs.com/romannista/p/10325289.html

时间: 2024-08-06 03:45:03

萌新向Python数据分析及数据挖掘 第一章 Python基础 第八节 函数的相关文章

萌新向Python数据分析及数据挖掘 第一章 Python基础 (上)未排版

因word和博客编辑器格式不能完全对接,正在重新排版,2019年1月1日发出第一章完整版 本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 python安装以及环境搭建 python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不

萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型

本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 第一节 Python安装以及环境搭建 Python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不错的选择. Anaconda详细安装使用教程 https://blog.csdn.

萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类

第一章 Python基础 第九节 类 面向对象编程时,都会遇到一个概念,类,python也有这个概念,下面我们通过代码来深入了解下. 其实类 和函数都是为了节省代码,有了类的的概念,就可以把相同的代码写在父类,子类继承后就可以直接使用,而且通过选择对应的父类就可以直接使用对应父类的内容. 创建和使用类 1 class Dog(): #认识狗这类东西 2 def __init__(self, name, age): #狗是肯定有名字和年龄的,是个狗就有,要用户填写 3 self.name = na

萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常

第一章 Python基础 第十节 文件和异常 从文件中读取数据 读取文件.文件路径   1 filename = 'pi_digits.txt' #文件名取个代号 2 #读取整个文件 3 with open(filename) as file_object: 4 contents = file_object.read()# 给内容取个代号 5 print(contents.rstrip()) 6 #逐行读取 7 with open(filename) as file_object: 8 for

萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks

Python Language Basics, IPython, and Jupyter Notebooks In [5]: import numpy as np #导入numpy np.random.seed(12345)#设定再现的的随机数 np.set_printoptions(precision=4, suppress=True) #设置打印设置 Signature: np.set_printoptions(precision=None, threshold=None, edgeitem

萌新向Python数据分析及数据挖掘 第二章 pandas 第五节 Getting Started with pandas

Getting Started with pandas In [1]: import pandas as pd In [2]: from pandas import Series, DataFrame In [3]: import numpy as np np.random.seed(12345) import matplotlib.pyplot as plt plt.rc('figure', figsize=(10, 6)) PREVIOUS_MAX_ROWS = pd.options.dis

用 WEKA 进行数据挖掘 ——第一章:简介

1.简介数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至算法优化,确实需要很多背景知识.但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西.他们的精力,集中在特征提取,算法选择和参数调优上.那么,一个可以方便地提供这些功能的工具,便是十分必要的了.而weka,便是数据挖掘工具中的佼佼者.Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

第一章计算机基础

第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 人用程序通过编程语言解释器,指令操作系统,最终控制电脑硬件来做符合人们需求的过程 1.2 操作系统 操作系统用于协同或控制硬件之间进行工作,常见的操作系统有那些: windows linux centos [公司线上一般用] mac 1.3 解释器或编译器 编程语言的开发者写的一个工具,将用户写的代码转换成010101交给操作系统去执行