python 函数 类 模块

python基础语法5

  • 函数
    • 作用域
    • 函数参数
    • 函数对象
    • 无名函数
    • 回调函数
    • 函数嵌套
    • 类的创建
    • 类的调用
    • 初始化方法
    • 类的继承
      • 类的定制
  • 模块
    • 使用模块

函数

封装好,进行某种功能

del 函数名(参数):函数体return 返回值(可以没有return语句)

作用域

在函数内定义的变量,仅能在函数内部使用,这是局部变量
函数之外的定义与赋值的变量,可以再任何地方使用,这是全局变量
global语句,可以将局部变量变成全局变量global 函数名

函数参数

位置参数:参数的顺序和个数和函数定义中一致

sum=0
def math(a,b,c):sum=a+b+creturn sum
a=1;b=2;c=3	
math(a,b,c)#a,b,c 依次传入math函数

默认参数:必须放在位置参数后面

def menu(hamburger,drinl,snacks='蛋挞'):print(('汉堡选择:' + hamburger)print('饮料选择:' + drink)print('小食选择:' + snacks + '\n')
menu('香辣鸡腿堡','可乐')
#打印结果:香辣鸡腿堡,可乐,蛋挞
menu('香辣鸡腿堡','可乐','薯条')
#打印结果:香辣鸡腿堡,可乐,薯条(给了3个参数。第3个参数被更新)	

不定长参数:*参数名,当传入参数数量不确定时使用,数据类型是元组(tuple),可以用for来循环遍历

def math(a,*b,c=1):print('a'=a)print('c'=c)for i in b:print(b)
math(123,11,22,33,c=2)

关键参数:使用伪参数(形参)的名字来指定其对应的实参(传入的变量)

def math(a,b):x=a-breturn x
y=math(b=3,a=7)

字典传参
1.关键参数作为字典接收

def dic(**args):for s,t in args.items():print(s,':',t)
dic(a=20,b=30,c=50)
#a:20
#b:30
#c:50 args变成一个字典

2.将字典展开并接收

def dic(a,b,c):print(a,b,c)
d={'a':20,'b':30,'c':50}
dic(**d)
#20 30 50
#字典d被展开到伪参数a,b,c上

函数对象

在函数名末尾不加括号,只写名称的格式所表示的是函数本身,我们将其称之为函数对象,可以像值一样将其带入到变量中去

def printHello(name):print('hello',name)
func=printHello#func是函数对象
func('siri')
#打印结果是hello siri
#将函数printHello带入到func,func可以作为函数使用	

无名函数

进行简单处理的函数,可以使用关键字“lambda"来记述,这种写法称为无名函数()

#函数
def lo(a):return a.lower()
#无名函数
lo=lambda s:s.lower()
print(lo('HELLO'))#输出 hello	

回调函数

函数可以将别的函数作为参数使用,被作为参数使用的函数被称为回调函数

def calcdisp(a,b,callback):print(callback(a,b))
def calllback(a,b):return (a+b)
calcdisp(3,5,callback)#输出值是8
#简化写法
calcdisp(3,5,lambda a,b : a + b)#callback被无名函数替代

函数嵌套

可以定义函数中的函数,内部函数称为本地函数

def func1():def func2():print(1)print(2)func2()#调用内部函数
func1()#调用外部函数
#在这里不能调用func2,func2是func1的内部函数,作用域在func1内

类的创建

类的创建:class 类名(类名首字母大写):
类的属性创建:赋值语句
类的方法创建:def 方法名(self):
其中,self代表着实例化对象,是所有实例的替身

class Math:type_1=int_true#创建属性def plus(self):#定义方法print(a+b)

类的调用

类的实例化:例如coke=water(),表明water这个类创建了一个叫做coke的实例,这个实例可以调用water类中的属性和方法

class Food:drink = '可口可乐'def hambage(self):print('香辣鳕鱼堡')
KFC=Food()#实例化类math,number为实例化对象,即self=number
print(Food.drink)#调用实例化对象的属性type_1
Food.hambage()#调用了实例化对象的方法plus

注意:用def创建方法时,第一个参数位置要留给self,不需要传参
类的方法内部想要调用类属性和其他方法,用self.属性或self.方法

class Food:drink = '可口可乐'def hambage(self):print('香辣鳕鱼堡')def menu(self):self.hambage()print(self.drink,'\n''蛋挞')
KFC = Food()
KFC.menu()

初始化方法

当每个实例对象被创建时,该方法内的代码无须调用,自动运行
可以在初始化方法内部完成类属性的创建,并设定初始值,方便随时调用

class Musician:	def__int__(self):print('这是初始化方法')
lisi=Musician()

那么调用属性的代码就发生了改变

class Pre:def __init__(self,name,age):self.name=nameself.age=agedef prin(self):print('%s的年龄是%d'%(self.name,self.age))
liu=Pre('刘刘',20)#作为name和age的值传到Pre中
liu.prin()

类的继承

子类有父类的属性和方法,子类属于父类,父类属于object类

class X():name=1
class Y(X):pass #占位
class Car:wheel=4def run(self):print('有%d个轮子'%self.wheel)
class BMW(Car):pass
BMW320=BMW() #子类BMW实例化,BMW320
print(BMW320.wheel)#有4个轮子

类的多层继承:
子类可以继承父类,父类的父类,父类的父类的父类,语法同单层继承
类的多重继承:
一个子类可以继承多个父类,和子类相关性更强的父类会放在更左侧,先在左侧父类找,找不到再去右侧父类(就近原则)

类的定制

子类可以再继承的基础上进行个性化定制,如创建新属性、新方法;修改继承的属性和方法
属性方法名不同时创建,相同名字时修改

#音乐人
class Musician():loveMusic = True3     def intr(self):print("我喜欢音乐")print("我来自音乐界")def sing(self):print("我在唱歌")
# Rapper继承音乐人
class Rapper(Musician): #类的继承garrulous = True    #类的定制 , 增加属性def composition(self):  #类的定制, 增加方法print("我可以创作简单的歌词")def sing(self): #类的定制,更改方法print("我以说的方式进行唱歌")csunYuk = Rapper()
print(csunYuk.loveMusic) 
print(csunYuk.garrulous)
csunYuk.composition()
csunYuk.sing()
#True
#True
#我可以创作简单的歌词
#我以说的方式进行唱歌

也可以对实例化属性进行修改
在这里插入图片描述

模块

模块,是一个将代码封装起来方便使用的py文件。里面可以有类、函数、变量。

a=10;b=1#变量print(a)#函数def math(a,b):#自定义函数    c=0c=a+breturn c#math函数返回cclass Math:#类num='1'#属性def __init__(self,a):#初始化函数self.a=adef plus(self):#方法print(self.num)import test.py#调用模块

使用模块

1、import 语句
⽤法:import 模块名
例⼦:import time;import csv

如何调⽤模块中的函数,变量
⽤法:模块名.函数;模块名.变量
2、from…import语句
⽤法: 从模块中导⼊⼀个指定的部分到当前模块(函数、变量、类名)
例⼦:from csv import *,默认将CSV模块中的所有函数、变量进⾏全部导⼊
3、if __name__=='__main__'
⽤法:当运⾏的⽂件是程序的⼊⼝时,则会执⾏if name=='main’下的语句,相反,当运⾏的⽂件作为模块是被其他程序导⼊时,代码if name=='main’下的代码则不会执⾏

#不使用if __name__=='__main__'
#A.py
name = '小刘'
def fun_A():print('调用方法A')
def print_name():print('__name__的值是',__name__)
print_name()
fun_A()#做脚本运行时:__name__的值是__main__,调用方法A
#B.py
import A#B运行,输出:__name__的值是A(值变成了模块名),调用方法A
#使用if __name__=='__main__'
#A.py
name = '小刘'
def fun_A():print('调用方法A')
def print_name():print('__name__的值是',__name__)
if __name__=='__main__'print_name()fun_A()#做脚本运行时:__name__的值是__main__,调用方法A
#B.py
import A
print_name()#B运行,输出:__name__的值是A,不会调用fun_A函数了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

activemq nodejs stomp 重连机制_5分钟优劣分析 Kafka、RabbitMQ、RocketMQ、ActiveMQ消息队列...

一、资料文档Kafka:中,有kafka作者自己写的书,网上资料也有一些。 rabbitmq:有一些不错的书,网上资料多。 zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。 rocketm…

excel保存快捷键_干货 | 快速提高工作效率的电脑快捷键!

点击标题下「蓝色微信名」可快速关注随着科学技术的发展,电脑已经成为每个人生活和工作的必备工具。然而,很多人在使用电脑的过程中非常依赖鼠标,导致双手需要频繁离开键盘,造成工作间歇中断,导致用电脑处理工作的效率…

钉钉 ISV 应用开发的一些心得

1. 背景 前段时间从前到后完整地做完了一个简单的钉钉上的 ISV 应用 —— 猿活动。 最开始想做这么一个小工具,是想到,平时部门中经常会组织一些分享活动,但是这些分享活动却没有一个比较直观的“站点”来记录一次又一次的,很多人…

python 编码 解码 读写文件

python基础语法6编码解码encode编码与decode解码读写文件编码解码 计算机是以二进制(0或1)存储的,以字节为单位,1byte8bit,1KB1024B;1MB1024KB;1GB1024MB 编码表:ASCII码&#xff0…

电脑如何设置不休眠_电脑休眠了却没法唤醒?设置一下就好!

关注全新【HP惠课厅】,惠普消费新品全知晓逐步复工,办公室环境又渐渐熟悉了起来午休外出吃饭、忙里偷闲散步、下班不想关电脑……随手就把电脑休眠了开机也快,网页和工作内容也不会被关掉休眠功能是挺好用的可有时候,无论怎么点开…

node+bower+gulp+webpack初见

2019独角兽企业重金招聘Python工程师标准>>> node node模块管理是通过NPM(即 Node Package Manage,是 NodeJS 模块管理工具)来处理各模块之间的依赖。NPM按树状结构来管理的,支持某模块的不同版本。 [前提是本机已安装…

hbuilder php mysql_xampp本地服务器+HBuilder配置php环境

HBuilder配置PHP环境:下载,运行HBuilder编辑器打开右侧小窗口,点击设置图标—>设置web服务器—>外置web服务器输入你想要浏览器运行的URL,点击两个确定,再重新点击设置web服务器,选择PHP类文件(选择之…

百度地图手机和电脑不一致_你可能不知道的电脑手机冷知识

各位好久不见呀,自科部科科又回来了!平时我们经常使用电脑,你可能以为你对电脑和手机了如指掌,然而下面的冷知识你知道多少个?01一台电脑可以有多个桌面如果你熟练的使用多个桌面这个技巧那么就可以躲着家长领导偷懒了…

RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)

2019独角兽企业重金招聘Python工程师标准>>> 1、systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。 systemctl可以列出正在运行的服务状态,如图&am…

js 刷新div_vue.js备忘记录(五) vue-router

如果我们采用SPA(单网页应用)的设计方式,服务器会把前端文件一次性发过来,前端通过监听url的改变,选择展示那些内容,也就是前端路由一. 如何改变url但是页面不刷新?方式一: 改变哈希值hash比如,我们随便找一个网页我们在浏览器控制台输入发现网站的url有了些改变查看network却…

css div撑满窗口高度_如何使用CSS将div的高度设置为窗口的100%?

css div撑满窗口高度Introduction: 介绍: Hello there developers! Well, certainly if you are reading this article then that means that you have run into some trouble while creating your web page or website and if you are a beginner in this field, …

.net core image怎么保存_轻量级Vue图片上传插件——Vue-core-image-Upload

介绍vue-core-image-upload 是一款轻量级的 Vue.js 上传插件,它可以支持的图片的上传,裁剪,压缩。它同样也支持在移动端的图片处理,它定义了诸多上传周期,你可以自由的进行流程控制。Githubhttps://github.com/Vanthin…

mysql确认半同步命令_怎么判断mysql是否是半同步复制

AFTER_COMMIT(5.6默认值)master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务。master等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端。AFTER_SYNC(5.7默认值,但5.6中无此模式…

《Linus Torvalds自传》摘录

转自:http://www.ruanyifeng.com/blog/2012/09/linus_torvalds.html作者: 阮一峰日期: 2012年9月 3日除了程序员,大概很少人知道Linux操作系统。它的发明者Linus Torvalds,知道的人就更少了。他本人也很低调&#xff0…

python绘制条形图例题_python matplotlib库绘制条形图练习题

练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a ["战狼2","速度与激情8","功夫瑜伽",&quo…

mac mysql 忘记密码 卸载_MySQL忘记密码后重置密码(Mac )

转:http://www.cnblogs.com/lihuanqing/p/5623872.html安装好MySQL以后,系统给了个默认的的密码,然后不小心关了,惨了密码没有了。1、关闭mysql服务器 sudo /usr/local/mysql/support-files/mysql.server stop 也可以在系统偏好里…

Nginx严格访问代理HTTP资源

为什么80%的码农都做不了架构师?>>> 1 严格访问 访问能基于客户端的IP地址允许或拒绝或使用基于HTTP验证。 为了允许或拒绝从某个地址及或所有地址的访问,使用allow和deny指令: location / { deny 192.168.1.2; allow 192.168…

csv 字符串_Python实现json转csv格式

利用Python实现json格式转换为csv文件格式前言本文是学校的课程设计,这里我没有用封装好的json库来实现,而是把读进来的文件当一个字符串来处理,核心函数其实是python的eval()类型转换函数。什么是 JSON?我们要考虑到json格式下key-value对的…

mysql 线性表_数据结构之线性表

概要参考《大话数据结构》,把常用的基本数据结构梳理一下。线性表定义线性表(List):零个或多个数据元素的有限序列。若将线性表记为 \((a_1, \cdots, a_{i-1}, a_i, a_{i1}, \cdots, a_n)\),则表中 \(a_{i-1}\) 领先于 \(a_i\),\(…

sqldeveloper mysql迁移_通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤

通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤发布时间:2020-06-08 15:52:18来源:51CTO阅读:210作者:三月本篇文章给大家主要讲的是关于通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤的内容&#xff0c…