函数

函数,在BASIC中,叫subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java中叫method。

定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需调用其函数名即可。

定义一个不带参数的函数:

def sayhi():
  print('hello')
sayhi()

定义一个带参数的函数:

def sayhi(name):
print('hello', name)
sayhi('Jack')

函数参数

形参:在函数定义时接收

默认参数:函数定义时即默认给参数赋值,调用时可以不需要额外赋值,位置应在位置参数之后。(有关默认参数陷阱,请见:函数的默认参数陷阱

关键参数:指定参数名,即成为关键参数,但是关键参数必须放在位置参数之后。

非固定参数(动态参数):

(1)动态位置参数:参数前加*号,传递的参数就可以不再是固定的个数,传过来的所有参数打包成元组。(形参可以是*args,也可以是*[列表]的形式)

(2)动态关键字参数:形式参数前加**号,传递的可以是未定义的关键字参数,以字典的key-value保存。

形参排列顺序:位置参数、动态位置参数(*args)、默认参数、动态默认参数(**kwargs) 

--如果想将一整个字典传入kwargs,则应在实参前也加上**号。

实参:在函数调用时传值

按照位置传值:现有一个列表(元组)args,使用*args传入可以将args拆分后传入函数,直接使用args传则会在函数中得到(args,)

按照关键字传值:现有一个字典kwargs,使用**kwargs传入可以将kwargs拆分后传入函数(且此处的键必须为字符串类型),直接使用kwargs传会报错。

函数参数总结:

函数返回值

函数的外部代码想要获取函数的执行结果,就可以用函数的return语句把结果返回。

注: 1.函数执行过程中,遇return即停止执行并返回结果,可以理解为return语句代表函数的结束。

        2.如果未在函数中指定return,则返回值为None。

   3.函数永远只能返回一个值,当有多个值时会打包成元组返回。

局部变量与全局变量

全局变量:定义在函数外部一级代码的变量,在全局都能用

局部变量:定义在函数里的变量,只能在局部生效

在函数内部,可以引用全局变量,但不能修改(global后则可以修改)。如果全局和局部都有一个同名,函数查找顺序是由内而外的。

作用域

在Python中,一个函数就是一个作用域(和JavaScript类似); C#、Java中作用域为{ }

局部变量放置在其作用域中,代码定义完成后,作用域已经生成,作用域链向上查找。验证如下:

 age = 18  # 全局作用域
def show_age():
new_age = 19 # 外层函数局部作用域
def inner():
print(age)
print(new_age)
show_age()

打印结果:

内层函数用到了外层函数以及全局的作用域的变量,但变量在此只能引用不能改变,否则会报错。

 

命名空间

命名空间也称名称空间,是存放变量名字的地方。举例说明,x=1,1存放在内存中,x变量名存在哪里呢?x本身也存在内存中。

名称空间正是存放名字x与1绑定关系的地方,它不仅存x名,也存了绑定关系。

名称空间共3种:

1.locals:函数内的名称空间,包括局部变量和形参。

2.globals:全局变量,程序所有的变量及绑定关系。

3.builtins:内置模块的名称空间

Python之函数——基础篇的更多相关文章

  1. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  2. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  3. [资料分享]Python视频教程(基础篇、进阶篇、项目篇)

    Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...

  4. Python成长笔记 - 基础篇 (四)函数

    1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python   1.函数:http://egon09.blog.51cto.com/9161406 ...

  5. python之路基础篇

    基础篇 1.Python基础之初识python 2.Python数据类型之字符串 3.Python数据类型之列表 4.Python数据类型之元祖 5.Python数据类型之字典 6.Python Se ...

  6. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

  7. python 17 函数基础(一)

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  8. Python成长笔记 - 基础篇 (二)python基本语法

    Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...

  9. Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性

    新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...

随机推荐

  1. BZOJ1095: [ZJOI2007]Hide 捉迷藏【线段树维护括号序列】【思维好题】

    Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩 捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条 ...

  2. C#浮点数保留位数

    C#浮点数保留位数 这里用String.Forma("{0:F}",x);来解决. 下面是试验和截图 using System; using System.Collections. ...

  3. 概率DP HDU 4586 play the dice

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4586 解题思路: 只考虑第一次,获得的金币的平均值为sum/n.sum为所有色子的面的金币值相加. ...

  4. 前端jquery学习--03

    1.tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. hdu2083 简易版之最短距离 排序水题

    给出数轴n个坐标,求一个点到所有点距离总和最小.排序后最中间一个点或两个点之间就是最优 #include<stdio.h> #include<algorithm> using ...

  6. 【网络编程】socket异常

    Socket异常 客户端异常 java.net.ConnectException: Connection refused: connect. 该异常发生在客户端进行new Socket(ip, por ...

  7. leetcode:Pascal's Triangle【Python版】

    1.这道题一次提交就AC了: 2.以前用C语言实现的话,初始化二维数组全部为0,然后每行第一个元素为1,只需要用a[i][j] = a[i-1][j]+a[i-1][j-1]就可以了: 3.在Pyth ...

  8. stenciljs 学习二 pwa 简单应用开发

    stenciljs 介绍参考官方网站,或者 https://www.cnblogs.com/rongfengliang/p/9706542.html demo 项目使用脚手架工具 创建项目 使用脚手架 ...

  9. Javascript 正则验证带 + 号的邮箱地址

    很多邮箱地址是可以加上 + 加号为同一个邮箱地址. 比如 Gmail. 如果需要验证带 + 号的邮箱,如下: str = "65485+55@gmail.com"; documen ...

  10. gitlab使用外部的postgresql、外部的redis服务器

    postgresql创建用户 su - postgres psql create role gitlab login encrypted password 'pass';\du ;显示用户 postg ...