python基础-------函数(一)
一 为何要有函数?
不加区分地将所有功能的代码垒到一起,
问题是:
代码可读性差
代码冗余
代码可扩展差
如何解决?
函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用
结论:函数使用必须是:先定义,后调用
二:函数的分类
1.内置函数:built-in
2.自定义函数:
def 函数名(参数1,参数2,...):
'''注释'''
函数体
三:函数的返回值
返回值:可以返回任意类型
没有return:None
return value: value
return val1,val2,val3 :(val1,val2,val3)
return的效果:只能返回一次值,终止函数的执行
四:函数参数的使用
def fuck():
# if 2>1
# print(2)
# #定义阶段只检查代码的语法不会执行代码,所以该函数内有报错!
#
# def fuck():
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# #虽然语法没错误但是逻辑有问题,引用了一个不存在变量名。
# #定义的阶段
# def fuck():
# print('fuck1')
# def fuck1():
# print(fuck())
# fuck()#调用的阶段
# 函数的调用遵循先定义后使用的规则(调用)!
# def fuck2():
# return #返回值 可以返回多个值默认以元组的形式返回 只能返回一次值 ,并且会终止函数的执行,因而放与最后!
#返回类型的值,没有return的话会默认返回None
# def fuck3():
# return 'a','b','c'
# b=fuck3()
# print(b)
# def fuck3(x,y):#形参,按照位置定义的形参! 遵循必须传入参数,多一个不行,少一个也不行!
# print('x','y')
#
# fuck3(1,2) #位置实参 ,按照位置定义的实参!首先必须遵循形参的规则!并且按照位置与形参一一对应!
# fuck3(x=1,y=2) #关键字实参, 按照关键字对应形参!首先必须遵循形参的规则!指名道姓的于形参对应
# fuck3(1,y=2) #混合型实参(既有位置实参,也有关键字形参!)首先必须遵循形参的规则!且遵循位置实参必须在关键字实参的前面 #可变长参数:实参参数个数不固定的情况!
#
#
# def fuck4(x,y,*mage): #用*来处理可变长的位置实参将多余出来的实参以元组的形式并且赋值给mage变量!*为位置参数遇到将其拆开!
# print(x,y,mage)
# fuck4(1,2,3,4,5,6,7,8)
# def fuck5(x,y,**kmages):#用**来处理可变长的关键字实参将多余出来的实参以字典的形式并且赋值给kmages变量!
# print(x,y,kmages)
# fuck5(x=1,y=2,z=12,ag=123)
默认参数
函数在定义时给参数进行了默认定义
def cout(a=1):#这个a=1就是默认函数 #默认参数需要注意的问题一:必须放在位置形参后面
#默认参数需要注意的问题二:默认参数通常要定义成不可变类型
#默认参数需要注意的问题三:默认参数只在定义阶段被赋值一次
#命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值
# def register(*args,name='egon',age):
# print(args)
# print(name)
# print(age)
#
# # register(name='egon',age=18)
# register(1,2,2,3,age=10
五:函数的嵌套使用
函数的嵌套调用
#
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# def max4(a,b,c,d):
# res1=max2(a,b) #23
# res2=max2(res1,c) #23
# res3=max2(res2,d) #31
# return res3
#
#
# print(max4(11,23,-7,31))
#函数的嵌套定义
def f1():
def f2():
def f3():
print('from f3')
print('from f2')
f3()
print('from f1')
f2()
# print(f1)
f1()
在函数定义阶段就进行函数内部逐层进行定义。
六:函数对象
#函数是第一类对象: 指的是函数可以被当做数据传递
def func():
print('from func')
#可被引用
# f=func
#可以当做函数的参数
# def func():
# print('from func')
# def foo(x):
# print(x)
# x()
#
# foo(func)
#可以当做函数的返回值
# def foo():
# print('from foo')
# def bar():
# return foo
# f=bar()
# print(f)
# print(foo)
# x=0
# def f1():
# x=1
# def f2():
# # x=2
# print(x)
# return f2
# f=f1()
# # print(f)
# f()
#可以当做容器类型的元素
# def select():
# print('select function')
#
# func_dic={
# 'select':select,
# }
#
# # print(func_dic['select'])
# func_dic['select']()
七:名称空间与作用域
#名字空间:存放名字与值的绑定关系
#名称空间分为三种
#内置名称空间:python解释器自带的名字,python解释器启动就会生成
#全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生
# x=1
# def func():
# pass
#
# class Foo:
# pass
#
# import os
#
# if 1 > 2 :
# y=3
#局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效
# def func(x,y): #x=1,y=2
# z=3
# func(1,2)
#三者的加载顺序:内置名称空间->全局名称空间->局部名称空间
#取值:局部名称空间->全局名称空间->内置名称空间
# # max=10
# def func(): #x=1
# # max=20
# print(max)
#
#
# func()
# max=10
#
# def func(): #x=1
# max=20
# # print(max)
# func()
#
#
# print(max)
#
# # x=0
# def f1():
# # x=1
# def f2():
# # x=2
# def f3():
# # x=3
# print(x)
# f3()
# f2()
#
# f1()
#作用域:作用范围
#全局作用域:内置名称空间与全局名称空间的名字属于全局范围,
# 在整个文件的任意位置都能被引用,全局有效
#局部作用域:局部名称空间的名字属于局部范围,
#只在函数内部可以被引用,局部有效
# x=1
# def foo():
# def f2():
# print(x)
# f2()
# def bar():
# print(x)
#
# foo()
# bar()
# def f1():
# x=1
# def f2(): #f2=value
# # x=2
# print(x)
# f2()
# f1()
x=1
def func():
x=2
def f1():pass
# print(dir(globals()['__builtins__'])) #全局作用域name
# print(locals()) #局部作用域name
func()
print(globals() is locals())
#取值查找顺序 局部作用域----->全局作用域
python基础-------函数(一)的更多相关文章
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- python基础—函数嵌套与闭包
python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间 内置在解释器中的名称 2 全局名称空间 顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...
- python基础—函数装饰器
python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...
- Python基础-函数参数
Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- Python基础-函数篇
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 函数与函数式编程 1.面向对象: 华山派-- ...
- python基础——函数
1.内置函数的调用: 可以在官方网站查找内置函数及说明,也可以通过help(abs)函数查看相应的信息. https://docs.python.org/3/library/functions.htm ...
- Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
1.函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
随机推荐
- ZOJ2401 Zipper 双塔式 DP
遇到双塔DP,写一下. flag是为了避免memset多次导致的时间浪费. #include<cstdio> #include<cstdlib> #include<ios ...
- Java面向对象 IO (三)
Java面向对象 IO (三) 知识概要: (1)IO 流的操作规律 (2)异常日志信息IO处理 ...
- Oracle 定时查询数据插入新表中(job+存储过程)
create table EGMAS_COUNT_DATA(TIMES date not null, COUNT NUMBER(30) not null, SYSTEM_NAME VARC ...
- java之基础数据类型学习————(一)
JAVA数据类型: 总结来说,java的基本数据类型分为 四类八种 • 第一类:整数类型:byte.short.int.long • 第二类:浮点型:float.double • 第三类:字符类型:c ...
- 安装Sublime Text 3插件的方法:
安装Sublime Text 3插件的方法: 朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助.麻烦动下手点下页面的广告吧,谢谢! 直接安装 安装Sublime text 2插件很方便,可 ...
- c语言入门
c 语言现在是一门很流行的语言,它介于汇编语言和高级语言之间,我认为 它属于中级语言,如c语言 的指针 ,位操作符,等,因为接近于汇编语言,c语言的执行代码效率很高 现在大多数的系统 如unix,和l ...
- Javascript常见浏览器兼容问题
常见浏览器原生javascript兼容性问题主要分为以下几类: 一.Dom 1.获取HTML元素,兼容所有浏览器方法:document.getElementById("id")以I ...
- 关于JavaScript日期类型处理的总结
在任何一门开发语言中,对日期时间类型的处理,必不可少也非常重要,长期以来对于JS的日期类型处理较为苍白.在这里做一个浅显的总结. Date 对象用于处理日期和时间.Date 对象用于处理日期和时间.D ...
- 我的第一个python web开发框架(12)——工具函数包说明(三)
mail_helper.py是邮件操作包,用来发送邮件的. #!/usr/bin/evn python # coding=utf-8 import smtplib from email.mime.te ...
- 浏览器缓存相关HTTP头部字段
1.Cache-Control/Pragma 2.Expires 3.Last-Modified/Etag