Python 【函数】
函数

内置函数
print() input() len() type() ...
print('Hello World')
函数 参数


定义函数
def greet(name):
print(name+'早上好')
return
第一行
def的意思是定义(define)
greet是【函数名】(自己取的)
再搭配一个括号和冒号,括号里面的name是参数(参数名也是自己取)
第二行
def下一行开始缩进的代码是函数要实现的功能,也叫【函数体】
第三行
函数内部一旦遇到return语句,就会停止执行并返回结果
没有return语句的函数,Python也会在末尾隐性地加上return None,
即返回None值(return None可以简写为return。),也可以省略return不写
————————————————————————
括号里可以有参数,又能没有参数
def pika1():
print('我最喜爱的神奇宝贝是皮卡丘')
def pika2(name):
print('我最喜爱的神奇宝贝是'+name)
————————————————————————
区别:第一个函数总是输出固定的一句话,所以不需要带参数
第二个函数需要参数name的参与,所以括号里需要带上name
################################
调用函数
输入函数名和参数对应的值
def pika2(name):
print('我最喜爱的神奇宝贝是'+name)
pika2('皮卡丘') #调用函数,输入函数名pika()并输入参数'皮卡丘'
我最喜爱的神奇宝贝是皮卡丘
————————————————————————————
参数的传递:弄清函数有多少个参数,如何给参数赋值
def pika(name,person): #两个参数
print('我最喜爱的神奇宝贝是'+name)
print('我最喜爱的驯兽师是'+person)
pika('可达鸭','小霞') #两个参数赋值
我最喜爱的神奇宝贝是可达鸭
我最喜爱的驯兽师是小霞
————————————————————————————
######################################
函数重要概念
参数类型:位置参数、默认参数、不定长参数
————————————————————————————
位置参数
def menu(appetizer,course):
print('一份开胃菜:'+appetizer)
print('一份主食:'+course)
menu('话梅花生','牛肉拉面')
一份开胃菜:话梅花生
一份主食:牛肉拉面
话梅花生'和'牛肉拉面'是对应参数appetizer和course的位置顺序传递的,
所以叫位置参数
灵活运用:
#如果采用下面这种形式传递,就不需要理会参数位置
menu(course='牛肉拉面',appetizer='话梅花生')
一份开胃菜:话梅花生
一份主食:牛肉拉面
————————————————————
默认参数
def menu(appetizer,course,dessert='绿豆沙'):
print('一份开胃菜:'+appetizer)
print('一份主食:'+course)
print('一份甜品:'+dessert)
menu('话梅花生','牛肉拉面')
一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:绿豆沙
#因为已经默认将'绿豆沙'传递给dessert,调用时无须再传递。
灵活运用:
menu('话梅花生','牛肉拉面','银耳羹') #默认参数也可以改变
一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:银耳羹
————————————————————————————————
不定长参数
def menu(*barbeque):
print(barbeque)
menu('烤鸡翅','烤茄子','烤玉米') #这几个值都会传递给参数barbeque
('烤鸡翅', '烤茄子', '烤玉米') #数据类型是元组
扩展
元组
数据用()小括号,用法和列表类似,可迭代遍历的
区别:列表元素可以随时修改,但元组中的元素不可更改
————————————————————————————————
综合列子
def menu(appetizer,course,*barbeque,dessert='绿豆沙'):
print('一份开胃菜:'+appetizer)
print('一份主菜:'+course)
print('一份甜品:'+dessert)
for i in barbeque:
print('一份烤串:'+i)
menu('话梅花生','牛肉拉面','烤鸡翅','烤茄子','烤玉米')
一份开胃菜:话梅花生
一份主菜:牛肉拉面
一份甜品:绿豆沙
一份烤串:烤鸡翅
一份烤串:烤茄子
一份烤串:烤玉米
#默认参数需要放在后面 (dessert='绿豆沙')
#########################################################
return语句

为什么用return语句?
1.如果不是立即要对函数返回值做操作,
那么可以使用return语句保留返回值
def face(name):
return name + '的脸蛋'
def body(name):
return name + '的身材'
#face('李若彤')
#body('林志玲') #函数也是可以互相嵌套这里可以归为一步
print('我的梦中情人:'+face('李若彤') +' + ' + body('林志玲'))
我的梦中情人:李若彤的脸蛋 + 林志玲的身材
————————————————————————————
2.需要多次调用函数时,可以再定义一个主函数main(),
调用非主函数的返回值
def face(name):
return name + '的脸蛋'
def body(name):
return name + '的身材'
def main(dream_face,dream_body):
return '我的梦中情人:' + face(dream_face) + ' + ' + body(dream_body)
#定义主函数,可以多次调用
print(main('李若彤','林志玲'))
print(main('新垣结衣','长泽雅美'))
——————————————————————————————
3.python函数的返回值可以是多个
多个返回值的数据类型是元组
def lover(name1,name2):
face = name1 + '的脸蛋'
body = name2 + '的身材'
return face,body
a=lover('李若彤','林志玲')
print(a)
('李若彤的脸蛋', '林志玲的身材') #一次接受多个返回值的数据类型是元组
#也可以和列表一样取值
print('我的梦中情人:'+a[0]+' + '+a[1])
——————————————
##############################
变量作用域
函数内部使用(局部作用域),它们被称作【局部变量】
任何位置使用(全局作用域),它们叫【全局变量】
局部变量和全局变量【不要】取相同的名字
三种对比
def egg():
quantity = 108
egg()
print(quantity)
#会报错,不能在函数外部(全局作用域)使用函数内的局部变量
quantity = 108
def egg():
print(quantity)
egg()
#函数内的局部作用域,可以访问全局变量
def egg():
global quantity
quantity = 108
egg()
print(quantity)
#global语句可以将局部变量声明为全局变量
————————————————
扩展global
将局部变量变成全局变量
def egg():
global quantity
#global语句将变量quantity声明为全局变量
quantity = 108
egg()
print(quantity)
————————————————————
Python 【函数】的更多相关文章
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数讲解
Python函数
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- Python函数解析
对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- Python函数1
Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...
- python函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- 7.26T1四分图匹配
四分图匹配 题目描述 一天晚上,zzh 在做梦,忽然梦见了她. 见到她,zzh 也不去看她,只顾低头自语…… “噫,OI 这个东西,真是无奇不有.” “嘿,你又学了什么?” “嗯,学到了一种算法,”z ...
- tar遇到error:"Error exit delayed from previous errors"的几种可能原因
1.使用root用户解压压缩包 2.赋予权限,sudo chmod 777 xxx.tar.gz 参考: https://blog.csdn.net/iamwrr/article/details/49 ...
- springboot 出现 org.hibernate.LazyInitializationException: could not initialize proxy
org.hibernate.LazyInitializationException: could not initialize proxy [com.example.shop.dataobject.U ...
- springboot工程打成war包
1.将pom.xml中默认的jar修改为war. <packaging>war</packaging> 2.排除SpringBoot内置的Tomcat容器. <depen ...
- ZR#955 折纸
ZR#955 折纸 解法: 可以发现折纸之后被折到上面的部分实际上是没有用的,因为他和下面对应位置一定是一样的,而影响答案的只有每个位置的颜色和最底层的坐标范围.因此,我们只需要考虑最底层即可,即我们 ...
- Jenkins系统初始化配置
1.点击系统管理-->全局安全配置 2.设置允许用户注册,点击保存 3.配置全局工具 4.配置maven文件路径,使用文件系统中的settings文件 5.配置jdk 6.配置maven 7.我 ...
- Python语法 - yield表达式(类似 m = yield i )
yield是个表达式而不仅仅是个语句,所以可以使用x = yield r 这样的语法, yield表达式可以接收send()发出的参数,yield表达式是跟send方法一起配合使用 send方 ...
- Python 中操作 MySQL
引入模块 在py文件中引入pymysql模块 from pymysql import * Connection 对象 用于建立与数据库的连接 创建对象:调用connect()方法 conn=conne ...
- 重读APUE(12)-SIGCHLD与僵尸进程
SIGCHLD信号是当子进程终止时向父进程发送的信号:它的语义如下: 如果进程明确的将该信号设置为SIG_IGN,则调用进程不会产生僵尸进程:这种情况下,wait是等不到给子进程收尸的,所以wait阻 ...
- go -- application/x-www-form-urlencoded发送post数据