关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值 必需参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 默认参数:调用函数时,如果没有传递参数,则会使用默认参数 全局变量和局部变量:
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中 注意:列表,字典,集合,类都可以在局部改全局。字符串和整数不能以局部改全局 递归函数:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出) eval()字符串转成字典
 #!/usr/bin/env python
#-*-coding:utf-8-*-
#_author_:Keep
'''
def area(width,height):
#calculate area
return width * height def print_welcome(name):
print("Welcome!",name)
print_welcome("keep")
w = 5
h = 6
print("width =",w,"height =",h,"area = ",area(w,h))
''' '''
#必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def printme(str):
'打印任何传入的字符串'
print(str)
return
printme(str= "你好!")
'''
'''
def printinfo(name,age):
"打印任何传入的字符串"
print("名字:",name)
print("年龄:",age)
return
printinfo(age=88,name='keep')#函数参数的使用不需要使用指定顺序
printinfo('keep',50)
'''
'''
def printinfo(name,age = 23):
'打印任何传入的字符串'
print("名字:",name)
print("年龄:",age)
return
printinfo(name = 'keep',age = 25)
print("******************************")
printinfo(name = 'keep')
'''
'''
def printinfo(arg1,*vartuple):#加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
print("输出:")
print(arg1)
print(vartuple)
#for var in vartuple:
# print(var)
return
printinfo(10,20,50)
'''
'''
def printinfo(arg1,**vardict):#加了两个星号 ** 的参数会以字典的形式导入
"打印传入任何形式的参数"
print("输出:")
print(arg1)
print(vardict)
printinfo(arg1 = 1,a = 2,b = 3)
'''
'''
#return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
def sum(arg1,arg2):
'返回2个参数的值'
total = arg1 + arg2
print("函数内:",total)
return total
total = sum(10,30)
print("函数外:",total)
'''
'''
#在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。
total = 50 #全局变量
def sum(arg1,arg2):
"返回2个参数的积"
total = arg1 * arg2
print("函数内是局部变量:",total)
return total
sum(20,30)
print("函数外是全局变量:",total)
'''
'''
#修改全局变量需要用global
num = 2
def fun():
global num #需要使用global关键字声明
print(num)
num = 888
print(num)
fun()
print(num)
'''
'''
#修改作用域的变量需要用nonlocal
def outer():
num = 123
print(num)
def inner():
nonlocal num #nonlocal关键字声明
num = 789
print(num)
inner()
print(num)
outer()
'''
#递归函数:
def calc(n):
print(n)
if int(n/2) >0:
return calc(int(n/2))
print("***",n)
calc(10)

学习过程演示代码

(python基础 函数)的更多相关文章

  1. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  2. python基础—函数嵌套与闭包

    python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间   内置在解释器中的名称 2 全局名称空间   顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...

  3. python基础—函数装饰器

    python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...

  4. Python基础-函数参数

    Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...

  5. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  6. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  7. Python基础-函数篇

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  函数与函数式编程 1.面向对象: 华山派-- ...

  8. python基础——函数

    1.内置函数的调用: 可以在官方网站查找内置函数及说明,也可以通过help(abs)函数查看相应的信息. https://docs.python.org/3/library/functions.htm ...

  9. Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)

    1.函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...

  10. Python 全栈开发四 python基础 函数

    一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...

随机推荐

  1. 12集合(1)-----List

    一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...

  2. 3,列表的 深 浅 copy

    如果列表只有一层,深浅copy是一样一样的,没有什么区别,你修改了copy后的列表,copy前的列表并不会随之改变. 如果列表中嵌套这列表,这是你修改了copy后第二层列表里面的元素,copy前第二层 ...

  3. Spark开发环境搭建(IDEA、Scala、SVN、SBT)

    软件版本 软件信息 软件名称 版本 下载地址 备注 Java 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  4. Mac OS环境下DOSBox汇编环境的搭建

    平台: mac 工具: DOSBox(点击下载DOSBox官网) debug.edit.link.masm等等(点击下载masm汇编开发工具,提取码: skc8) 步骤: 1 .安装DOSBox: 解 ...

  5. Inno Setup打包带有MSI文件的程序

    [Setup] ; 注: AppId的值为单独标识该应用程序. ; 不要为其他安装程序使用相同的AppId值. ; (生成新的GUID,点击 工具|在IDE中生成GUID.) AppId={{47A1 ...

  6. GDI与GDI+性能比较

    编写程序对GDI和GDI+绘制进行了比较,经过比较,GDI相对GDI+还是有一些性能优势的. 同时比较了每次绘制创建TGPGraphics对象和共用一个TGPGraphics对象的情况,两者性能相差不 ...

  7. CouchBase数据库-一个较新的、发展迅速的nosql数据库技术

    couchbase是一个较新的.发展迅速的nosql数据库技术.2014年,viber宣布使用couchbase替换mongodb,以适应10亿级的用户量,目前,couchbase已大量运用于生产环境 ...

  8. pycrypto安装出错的问题 intmax_t C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\inttypes.

    前言: 需要安装 Microsoft Visual Studio2017 Community 或者buildtools 解决方案一(解决了python3.7上安装pycrypto-2.6.1的错误问题 ...

  9. 新安装mysql,如何提升mysql安全性

    1.修改mysql默认端口,将3306修改为其他端口. 2.设定足够复杂的密码策略并指定访问IP(在user表中可以指定用户可访问的访问IP地址). 3.设定IP访问白名单. 4.设定root用户只能 ...

  10. squid http,https, 代理,默认端口3128

    squid http,https, 代理,默认端口3128 https 代理时出现 403,是因为squid默认允许 192.168.0.0 网段代理 在配置文件中,““acl localnet sr ...