Python入门4
函数
函数其实在日常的编码过程中,你都在使用,比如print()、input()、len()等函数,只不过这些都是python给你写好的内置函数,供你是用,内置的函数数量有限,想让python为我们做更多的事情,就需要自己设计符合的函数
1、减少重复代码
2、使程序变的可扩展
3、使程序变得易维护
开始创建函数:
创建函数之前,我们先对创建函数的语法进行了解,见下图

1、def 是关键字,不可缺少
2、函数名可以自己定义,不可缺少
3、参数:可选
4、retrun:可选
示例:
def hello():
print('hello world')
函数的调用
函数在定义完成后,自身无法进行允许,必须进行调用,比如我们把上边的函数进行执行
hello() # 输出
hello world
函数的参数
在调用函数的时候,我们会往里面传入一些值,放在函数的括号内,这个就叫参数,比如书写如下函数:
def hello(name):
print('hello ' + name) hello('Tom')
hello('Jerry') # 输出
hello Tom
hello Jerry
1、位置参数:
位置参数就是在调用函数的时候,形参和实参一一对应,不多也不少,这就是位置参数
def calc(x, y):
print(x * y) calc(2, 3)
2、关键参数
在有的时候,我们希望在调用的时候明确,我要把实参的值赋予给谁的时候,就需要是用关键参数,这个时候,你的参数顺序可以随意更换。
def calc(x, y):
print(x * y) calc(x=2, y=3)
3、非固定参数--*args
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
def test(*args):
print(args) test('arg1', 'arg2', 'arg3') # 输出
('arg1', 'arg2', 'arg3')
4、非固定参数--**kwargs
def test(**kwargs):
print(kwargs) test(name='tom', age=18) # 输出
{'age': 18, 'name': 'tom'}
局部变量和全局变量
在被调用的函数内部使用的变量,属于局部变量,处于该函数的"局部作用域",这个时候的变量,不能被外部是用,例如:
def test():
count = 1 print(count) # 输出
NameError: name 'count' is not defined
调用全局变量
count = 1 def test():
print(count) test()
递归
递归(recursion):通俗的说,程序调用自身的编程技巧。函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
def func(num):
if num == 1:
return 1
return num * func(num - 1) x = func(7)
print(x)
Python入门4的更多相关文章
- python入门简介
Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- python入门学习课程推荐
最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...
- Python运算符,python入门到精通[五]
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...
- Python基本语法[二],python入门到精通[四]
在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...
- Python基本语法,python入门到精通[二]
在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...
- visual studio 2015 搭建python开发环境,python入门到精通[三]
在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...
- python入门教程链接
python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...
- Python学习【第二篇】Python入门
Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...
- python入门练习题1
常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...
- Python入门版
一.前言 陆陆续续学习Python已经近半年时间了,感觉到Python的强大之外,也深刻体会到Python的艺术.哲学.曾经的约定,到现在才兑现,其中不乏有很多懈怠,狼狈. Python入门关于Pyt ...
随机推荐
- UCanCode发布升级E-Form++可视化源码组件库2014 全新版 (V20.01)!
UCanCode发布升级E-Form++可视化源码组件库2014 全新版 (V20.01)! --- UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版本2014最新版 ...
- Android ScrollView与ListView的冲突解决办法汇总
1. public void setListViewHeight(){ ListAdapter listadapter = lv.getAdapter(); if (listadapter == n ...
- 自定义Toast解决快速点击时重复弹出,排队无止尽
解决办法:自定义MyToast类: public class MyToast { /** 之前显示的内容 */ private static String oldMsg ; /** Toast对象 * ...
- Android Studio Problem : failed to find style 'textviewstyle' in current theme 解决方法
新建一个空白的MainActivity时Preview就出现一个错误: failed to find style 'textviewstyle' in current theme 开始在国内的博客平台 ...
- ResultSet 结果集带回来的一些信息
ResultSet.getMetaData() 得到结果集的结构信息,比如字段数.字段名等. ResultSet.getMetaData().getTableName(1) 就可以返回表名. Resu ...
- u-boot链接脚本分析
eclipse 64位下载地址:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release ...
- 关于jQuery外部框架
(function(window, undefined) { var jQuery = ... ... window.jQuery = wind ...
- 从零开始学习Node.js例子八 使用SQLite3和MongoDB
setup.js:初始化数据库 var util = require('util'); var async = require('async'); //npm install async var no ...
- Life of a triangle - NVIDIA's logical pipeline
Home GameWorks Blog Life of a triangle - NVIDIA's logical pipeline Life of a triangle - NVIDIA's l ...
- Java语言的安全性的体现
Java语言的安全性的体现 1.严格遵循面向对象的规范.这样封装了数据细节,只提供接口给用户.增加了数据级的安全性. 2.无指针运算.java中的操作,除了基本类型都是引用的操作.引用是不能进行增减运 ...