python基础(11):函数(一)
1. 什么是函数
1.我们到⽬前为⽌,已经可以完成⼀些软件的基础功能了。那么我们来完成这样⼀个功能: 约会:
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 约⼀次
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 再来⼀次
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
while 1:
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
2. 函数的定义,函数名,函数体以及函数的调用
def 函数名():
函数体
def yue():
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 调⽤yue()函数
yue()
结果:
拿出⼿机
打开陌陌
找个漂亮的妹⼦
问她, 约不约啊?
oK. ⾛你!

终于可以约了,如果我还想约呢? 多次调⽤就可以了,很⽅便。
# 调⽤yue()函数
yue()
yue()
yue()
yue()
yue()
3. 函数的返回
def yue():
print("约你")
print("约我")
print("约他")
return
print("约谁呀") # 这句话不会被执⾏
yue()
def yue():
print("约你")
print("约我")
print("约他")
return "美⼥⼀枚"
girl = yue()
print(girl) # 美⼥⼀枚
def yue():
print("约你")
print("约我")
print("约他")
return "美⼥⼀枚", "萝莉⼀枚"
girl = yue()
print(type(girl)) # tuple
4. 函数的参数
def 函数名(参数列表):
函数体
def yue(chat):
print("拿出⼿机")
print("打开"+chat)
print("找个漂亮的妹⼦")
print("约不约")
yue("陌陌")
yue("微信")
yue("探探")
结果:
拿出⼿机
打开陌陌
找个漂亮的妹⼦
约不约
拿出⼿机
打开微信
找个漂亮的妹⼦
约不约
拿出⼿机
打开探探
找个漂亮的妹⼦
约不约
1. 形参写在函数声明的位置的变量叫形参,形式上的⼀个完整,表⽰这个函数需要xxx。2. 实参在函数调⽤的时候给函数传递的值,叫实参,实际执⾏的时候给函数传递的信息,表⽰给函数xxx。3. 传参给函数传递信息的时候将实际参数交给形式参数的过程被称为传参。
def yue(chat): # chat 形参
print("拿出⼿机")
print("打开"+chat)
print("找个漂亮的妹⼦")
print("约不约")
yue("陌陌") # 实参
len("字符串") # "字符串"在这⾥就是实参
print("麻花藤") # "麻花藤"就是实参
4.1 实参
4.1.1 位置参数
约到这⾥了,有没有想过这个问题,啥样的都约么? 哪⾥的都约么? 不⼀定吧,比如,我在北京,我很寂寞,我喜欢萝莉。在哈尔滨,很寂寞,御姐就⾏了, 需求是不⼀样的。 ⽽我
们现在的函数没有这些功能,那怎么办呢? 很简单,多来⼏个参数就好了。
def yue(chat, address, age): # 形参
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
yue("微信", "北京", 18) # 实参
结果:
拿出⼿机
打开微信
找个北京附近漂亮的18岁妹⼦
约不约
分析: 在访问yue()的时候,我们按照位置的顺序分别把"微信","北京",18 赋值给 chat,
address,age。在传参过程中,系统会默认按照位置把实参赋值到形参。
4.1.2 关键字参数
位置参数好不好呢? 如果是少量的参数还算OK,没有问题,但是如果函数在定义的时候参数非常多怎么办? 程序员必须记住,我有哪些参数,⽽且还有记住每个参数的位置,否则函数
就不能正常调⽤了,那则么办呢? python提出了⼀种叫做关键字参数,我们不需要记住每个参数的位置,只要记住每个参数的名字就可以了。
def yue(chat, address, age):
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
yue(chat="微信", age=18, address="北京") # 关键字参数.
结果:
拿出⼿机
打开微信
找个北京附近漂亮的18岁妹⼦
约不约
搞定,这样就不需要记住繁琐的参数位置了。
4.1.3 混合参数
可以把上⾯两种参数混合着使⽤,也就是说在调⽤函数的时候即可以给出位置参数,也可
以指定关键字参数。
# 混合参数
yue("微信", age=18, address="上海") # 正确.第⼀个位置赋值给chat, 后⾯的参数开始指定关键字.
yue(age="", "微信", address="⼴州") # 错误, 最开始使⽤了关键字参数, 那么后⾯的微信的位置就串了, 容易出现混乱
注意: 在使⽤混合参数的时候,关键字参数必须在位置参数后⾯
综上: 在实参的⾓度来看,分为三种:
1. 位置参数
2. 关键字参数
3. 混合参数, 位置参数必须在关键字参数前⾯
4.2 形参
在形参⾓度看. ⼀共分为三种. 这章我们学习两种
4.2.1 位置参数
按照位置来赋值,到⽬前为⽌,我们编写的函数都是这种。
def yue(chat, address, age):
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
4.2.2 默认参数
在函数声明的时候,就可以给出函数参数的默认值。在调⽤的时候可以给出具体的值,也可以不给值,使⽤默认值。
比如,我们录入咱们班学⽣的基本信息,通过调查发现,我们班⼤部分学⽣都是男⽣,这个时候就可以给出⼀个sex='男'的默认值。
def stu_info(name, age, sex='男'):
print("录⼊学⽣信息")
print(name, age, sex)
print("录⼊完毕")
stu_info("张强强", 18)
注意, 必须先声明位置参数, 才能声明默认值参数.
综上: 在形参的⾓度来看
1. 位置参数
2. 默认值参数(⼤多数传进来的参数都是⼀样的, ⼀般⽤默认参数)
python基础(11):函数(一)的更多相关文章
- python基础11 ---函数模块1
函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该 ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- 十一. Python基础(11)—补充: 作用域 & 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
随机推荐
- Vue.js学习笔记--菜鸟搭建一个企业级vue的项目
vue.js新手搭建一个企业项目,从0开始 前置条件: node.npm请先安装配置好 下面开始: npm 下载vue-cli脚手架工具 确认安装成功看到版本号: 初始化项目,选用webpack(p ...
- Navicat Premium连接mongodb基本使用和介绍
Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具, 它可以让你以单一程式同时连线到 MySQL.SQLite.Oracle 及 PostgreSQL,mongodb ...
- Hive部分函数解析
Hive部分函数解析 Hive里的exists ,in ,not exists ,not in 相关函数 表数据准备: 1.选择指定数据库 eg: use bg_database1; 2. 创建表 ...
- Linux 指令学习
查询java安装地址 which java ls -lrt /bin/java ls -lrt /etc/alternatives/java # 如果已经配好,则echo $JAVA_HOME 更改环 ...
- 搞定vscode编写java(手把手篇)
1: 下载VSCODE 本来我写过一个 vscode 编写java 帖子,但是 还是很多人私信我,下面写一个手把手教程 原文地址: https://www.cnblogs.com/dgwblog/p/ ...
- docker 指定版本rpm包安装
1.docker rpm包下载地址 # https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 2.下载rpm包 # wg ...
- C#_.NetFramework_Web项目_NPOI_EXCEL数据导入
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 项目需要引用NPOI的Nuget包: B-2--EXCEL数据导入--NPOI--C#获取数 ...
- JAVAEE学期总结
声明:除第一张思维导图为博主所制作,其他思维导图皆来自网络,若侵权,望告知,必删除. ...
- Python Web(三)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Django母版渲染 1.创建母版文件 base.html <!DOCTYPE html> < ...
- 【Gradle】自定义Android Gradle工程
自定义Android Gradle工程 defaultConfig默认配置 defaultConfig是Android对象中的一个配置项,负责定义所有的默认配置.一个基本的defaultConfig配 ...