从零开始的Python学习Episode 10——函数
函数
一、函数的创建
简单格式
def function_name(参数表):
函数体
return
如果没有写return,函数会默认返回一个none
二、函数的参数
必需参数:
调用函数时必需参数须以正确的顺序传入,调用的数量必须和声明时的一样。
def func1(name,age):
print('my name is %s,i am %d years old'%(name,age)) func1('smilepup',20)
#输出my name is smilepup,i am 20 years old
关键字参数:
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def func1(name,age):
print('my name is %s,i am %d years old'%(name,age))
#func1(20,'smilepup')#报错
func1(age = 20,name = 'smilepup')
缺省参数(默认参数):
调用函数时,缺省参数的值如果没有传入,则被认为是默认值,如果输入了缺省参数了,则传入输入的参数。
def print_info(name, age, gender='male'):
print('Name:%s' % name)
print('age:%s' % age)
print('Sex:%s' % sex)
return
print_info('smilepup', 20)#gender为male
print_info('puppy', 2, 'female')#gender为female
不定长参数
当需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。
def func1(*args):
print(args)
return
func1(1,2,3,4)
#输出(1, 2, 3, 4)
args中的数据用元组保存。
用**的变量名可以存放命名的变量参数
def func1(**args):
print(args)
return
func1(name = 'smilepup',age = 20,gender = 'male')
#输出{'name': 'smilepup', 'age': 20, 'gender': 'male'}
而这种则用字典保存数据。
当函数需要传入不同类型的变量时,要注意顺序必需参数、默认参数、带一个星号的不定长参数、带两个星号的不定长参数的顺序定义形参,否则会报错。
三、作用域
L:local,局部作用域,即函数中定义的变量;
E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G:globa,全局变量,就是模块级别定义的变量;
B:built-in,系统固定模块里面的变量,比如int, bytearray等。
搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域
global关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下
count = 10
def outer():
global count
print(count)
count = 100
print(count)
outer()
#10
#100
四、递归函数
定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
斐波那契数列
def fibo(n):
before = 0
after = 1
for i in range(n - 1):
ret = before + after
before = after
after = ret return ret
从零开始的Python学习Episode 10——函数的更多相关文章
- 从零开始的Python学习Episode 23——进程
---恢复内容开始--- 进程 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用 ...
- 从零开始的Python学习Episode 22——多线程
多线程 线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. ...
- 从零开始的Python学习Episode 20——面向对象(3)
面向对象之封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体. 隐藏 在python中用双下划线开 ...
- 从零开始的Python学习Episode 12——迭代器&生成器
生成器 列表生成式 用于快速地生成一个列表 a = [x*x for x in range(1,9)] print(a) #输出[1, 4, 9, 16, 25, 36, 49, 64] 也可以用于生 ...
- 从零开始的Python学习Episode 21——socket基础
socket基础 网络通信要素: A:IP地址 (1) 用来标识网络上一台独立的主机 (2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段.主机号:用于识别该网络中的 ...
- 从零开始的Python学习Episode 17——序列化
序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语 言中也被称之为serialization,marshalling,flattenin ...
- 从零开始的Python学习Episode 16——模块
一.模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相 ...
- 从零开始的Python学习Episode 14——日志操作
日志操作 一.logging模块 %(message)s 日志信息 %(levelno)s 日志级别 datefmt 设置时间格式 filename 设置日志保存的路径 level 设置日志记录的级别 ...
- 从零开始的Python学习Episode 13——常用模块
模块 一.time模块 时间戳(timestamp) :时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 元组(struct_time) :struct_time元组共有9 ...
随机推荐
- PHP介绍(PHP入门1)
BS架构和CS架构 B:Browser:浏览器 S:Server:服务器 C:Client:客户端 BS 浏览器和服务器的关系,通过浏览器来访问服务器,比如:百度.新浪... 优点:只要有浏览器就能访 ...
- GraphQuery - Powerful html/xml query language
GraphQuery GraphQuery is a query language and execution engine tied to any backend service. It is ba ...
- jQuery实现购物车计算价格功能的方法
本文实例讲述了jQuery实现购物车计算价格功能的简易方法,做的比较简单,现分享给大家供大家参考.具体如下: 目的: <%@ page language="java" con ...
- JavaScript变量类型检测总结
JavaScript中的变量类型: 基本类型值:Undefined,Null,Boolean,Number和String. 按值访问(可直接操作保存在变量中的变量值): 复制规则:当复制基本类型值时: ...
- Xquery的初步学习(一次Lab作业的总结)
Task 1: Open countries.xml, compose the following XQueries: 1. Return the area of Mongolia. 2. Retur ...
- 日期插件rolldate.js的使用
日期插件rolldate.js的使用 下载地址:http://www.jq22.com/jquery-info19834 效果: 代码: <!DOCTYPE html> <html ...
- node.js的http模块创建基本Web服务器
首先下载node.js模块.终端执行命令 npm i node -g 引入http核心模块 const http =require('http') 引入文件系统模块 const fs =require ...
- TF-IDF介绍
TF-IDF是什么 TF-IDF是一种统计方法,用以评估一个词对于一篇文章或语料库中一篇文章的重要性.字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. T ...
- 大数据分析系统Hadoop的13个开源工具
Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来. 用户可以在不了解分布式底层细节的 ...
- 使用docker-compose运行微服务项目#eureka+config+auth+gateway+module
微服务架构中我们使用了必须的四个组件,eureka config gateway auth 其中config依赖eureka,auth依赖前两者,gateway又依赖auth 这样就确定了四个组件的启 ...