python初体验-函数(2)

一、函数的多参数

在学函数的定义时,我们知道了函数名后英文括号内的是函数的参数。就像咖啡机要加咖啡豆和水两个输入一样,Python 中函数的参数个数也非常灵活,支持 0 到多个参数。如果没有参数,括号内就空着,如果有多个参数,每个参数用英文逗号隔开。

Python 中的参数按传入方式分为两种:

  • 位置参数
  • 关键字参数

位置参数

位置参数,顾名思义就是按位置来给参数赋值。

def func(name, age, height, weight):
  print(‘name =‘, name)
  print(‘age =‘, age)
  print(‘height =‘, height)
  print(‘weight =‘, weight)

func(‘小陈‘, 18, ‘165cm‘, ‘50kg‘)

在上述代码中,按参数定义的位置一一赋值。调用函数后,name 的值为小贝,age 的值为 18,height 的值为 155cm,weight 的值为 40kg。

关键字参数

在位置参数中,我们需要记得定义函数时每个位置对应的参数是什么,从而在调用函数时按正确的顺序传入参数,而关键字参数可以减轻我们记忆的负担。

def func(name, age, height, weight):
  print(‘name =‘, name)
  print(‘age =‘, age)
  print(‘height =‘, height)
  print(‘weight =‘, weight)
func(age = 18, weight = ‘50kg‘, name = ‘小陈‘, height = ‘165cm‘)我们在上述代码中可以看到,我们使用 参数名 = 值 的方式给参数赋值。通过这种方式,参数的位置不再重要。我们可以很轻松地给对应的参数赋值,并且能一眼看出各个参数所对应的含义。除此之外,我们再学习一种 Python 中常用的小技巧——默认参数
# 小陈已经不再长高了,我们可以设置身高默认为 165cm
def func(name, age, weight, height = ‘165cm‘):
  print(‘name =‘, name)
  print(‘age =‘, age)
  print(‘height =‘, height)
  print(‘weight =‘, weight)

# 调用函数时可以省略 height 参数
func(‘小陈‘, 18, ‘40kg‘)
# 如果小陈哪天奇迹般地又长高了,我们也可以给 height 重新赋值
func(‘小陈‘, 18, ‘40kg‘, ‘168cm‘)

请注意,默认参数一定要放在位置参数后,否则将会出现 SyntaxError: non-default argument follows default argument 的错误

二、函数的多个返回值Python 中使用 return 返回函数的结果,该结果也被称为函数的返回值。注意:return 将结果返回后并退出函数,因此执行完 return 语句之后,剩下代码将不会执行。和函数的参数一样,函数也支持 0 到多个返回值。因为并不是所有的函数都需要有返回值。但当你的函数没有 return 时,Python 会偷偷在你的函数末尾加上一句 return None。Tips:None 是 Python 中一个特殊的值,你可以简单地理解为什么都没有(为空)。

多个返回值也和多参数一样,用英文逗号隔开。
三、函数的变量作用域先看一个例子:
value = ‘我是全局变量‘

def func1():
  value = ‘我是局部变量‘
  print(value)

def func2():
  print(value)

def func3(value):
  print(value)

func1()
func2()
func3(‘我也是局部变量‘)
print(value) 
运行结果:

在 Python 中变量作用域分为 全局作用域局部作用域 两种,分别对应了 全局变量局部变量。简单来说就是:函数内定义的变量是 局部变量,函数外定义的变量是 全局变量

总的来说,Python 会优先在局部作用域内寻找变量,找不到再去外层的全局变量寻找,如果都找不到则报 NameError 的错误。

当然!只需要在局部变量前加上 global 关键字,全局作用域即可访问局部作用域的变量,看个例子:

def func():
  global value
  value = ‘我是提升为全局变量的局部变量‘
  print(value)

func()
# 输出:我是提升为全局变量的局部变量
print(value)  # 第 8 行
加了 global 关键字后,相当于我们向大家宣布,自己家的里东西大家可以一起共用。
 
 

原文地址:https://www.cnblogs.com/free-1124/p/11332132.html

时间: 2024-10-21 03:14:33

python初体验-函数(2)的相关文章

python初体验-函数(1)

说到函数,你肯定第一时间联想到数学中学过的函数,比如:y = 2x + 1.在数学函数中,给定一个 x 的值,就能得到一个 y 的值. 在 Python 的世界里,函数也是类似的,给定一个输入(有些情况下也可以没有输入),经过函数处理过后得到一个输出. 来看一个例子:我们之前提起过,可以使用 type() 函数来查看某个值的类型. print(type('Hello World')) # <class 'str'> 一.内置函数 内置函数,顾名思义就是预先写好的函数. 像 print() 函数

ipython及Python初体验

阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一.Python环境体验 1.常见Python编辑器介绍 1.在linux下使用vim 编辑Python脚本时,推荐--没有道理-- 2.Eclipse 3.notepad++:挺好用的一款编辑工具 4.IDLE (官方自带)交互式的开发语言集成环境 5.pycharm  第三方的工具:ipython

python初体验之小小爬虫

小月月是个懒家伙,博客更新好慢... 前几天拿到某公司的面试题,要求在Linux/Ubuntu/Debian/Suse/Centos下用python2.7开发一个爬虫,抓取百度新闻搜索结果的前三页标题+url. 这可把对python一窍不通的小月月难住了,肿么办呢...哦,最简单有效直接的方法就是网上查资料,ok,go~! 首先感谢http://www.1point3acres.com/bbs/thread-83337-1-1.html跟http://blog.csdn.net/column/d

Python初体验之基础语法(三)

所有测试语句基于Python 2.7.1 自学Python,如果哪里说的不恰当,还请指正.谢谢. 示例绝大部分来自博客园vamei的python教程 1.函数参数  关键字传递 #! /usr/bin/env python # coding=UTF-8 # 函数参数关键字传递 根据每个参数的名字传递参数-->无需遵照位置对应关系 # 可以与位置传递混用,但是直接的值传递的参数要出现在关键字参数之前 def sum(a, b, c): return a + b + c print "sum(

python初体验--我对python的体会

接触了python已经两周了,从一个程序小白发展到了对python有了一些简单的认识,虽然以前学过一些c语言,但是能感觉出来python与c之间的差别很大,python的计算能力比c要高得多,而且各种包使python使用起来非常方便,这可以让我们再平时可以利用python制作一些小的程序来计算一些问题,使学这门语言有了更多实用性.而且上课老师为我们展示python通过arduino制作温度计算和bim指数,并且通过数据绘画出图形化界面,利用其中的函数把数据做成图表使我更加感兴趣,感觉这些实验很有

Python初体验

本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语

Python初体验之基础语法(二)

所有测试语句基于Python 2.7.6 , Ubuntu 14.04 LTS 自学Python,如果哪里说的不对,还请指正.谢谢. 示例绝大部分来自博客园vamei的python教程 1.文件读写操作 一. 按字节读取文件 #!/usr/bin/env python #coding=UTF-8 #默认python编码是ASCII编码 要支持中文 #加上coding=UTF-8的声明 # open()打开文件 r只读 w写入 a追加 r+ w+ a+模式 # a+方式打开文件 指针指向结尾 ,

stackless python初体验

stackless python真是毁三观,算斐波那契数列,n为100000(十万),运行时间2.2秒左右 这里写一下感悟: stackless python从字面上理解就是没有栈的python,怎么做到没有栈呢?基于堆栈的语言是怎么实现的: 1.一般将函数的调用推进栈里面,后入栈单元计算完之后,先入栈的才能够完成 2.栈里面的单元怎么通信呢?今天刚好做完DDos攻击的实验,提醒我了这点:栈的单元通过入口地址和返回地址与它的前后单元通信. 3.栈的厚度有限制,貌似是1000多,就是说,迭代到10

第三节 Hello world --python初体验

祭旗--hello world 据说简单优雅.功能强大是python的魅力所在,这里看到简单了,优雅是什么样的,接下来的学习中慢慢体会吧! 1 print ("Hello world") 数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种:整数型.浮点型.