python的函数结构_Python的逻辑结构和函数

1.Python中的逻辑结构

①顺序执行

②选择执行:

if...elif...else...

没有switch..case..

③循环执行:

for...in...

while...

没有do..while...

注意: if/for/while后面不使用{ }, 而用 : 代替;  下面一句必须有缩进(可以是TAB或若干空格);  再下面一句如果也是执行主体必须有同样的缩进!

循环语句中,可以使用关键字:break(打断循环) 和 continue(继续下一次循环)

if( ):

pass

if( ):

pass

else:

pass

if( ):

pass

elif( ):

pass

else:

pass

while(  ):

pass

for  临时变量   in   list/tuple/range/set/dict :

pass

2.Python中使用函数

定义:函数用于封装一批需要反复执行的代码

创建函数:

def  函数名( 形参列表 ) :

函数主体

return 返回值

调用函数:

变量 = 函数名( 实参列表 )

注意:Python中实参的个数必须与形参个数完全一样!!!

默认值参数:

def  add(n1, n2=200):

pass

调用可以有两种形式:

add(10)     #n1=10; n2=200

add(10, 20) #n1=10; n2=20

注意:有默认值的形参必须声明在所有无默认值的形参之后!

可变数量的参数:

def  add( *nums ):

pass #此处的nums是一个tuple

add(10, 30, 50)

-----------------------------------------------------

def  add( **money ):

pass #此处的money是一个dict

add(jan=1000, feb=3000, may=5000)

关键字参数:

如果函数的形参过多,因为顺序很重要,不方便记忆,实参列表中可以使用关键字参数:每个实参都有一个名字——该实参对应的形参名

def  connect(host, user, pwd, port, dbname):

pass

connect(user='root', pwd='123456', port=3306, dbname='xz', host='127.0.0.1')

3.变量的作用域问题 —— 难点

Python中,变量的作用域分为四类:简称LEGB

①Local:本地作用域,指定义在函数内的变量,只能在当前函数内使用

②Embeded:嵌入作用域,或称为闭包作用域,指定义在外部函数,但要供内部函数在外部使用的变量

③Global:全局作用域,指定义在任意函数外面,可供当前脚本中的任意函数使用

④Built-In:内置作用域,指Python解释器提供的变量和函数,可以在任意脚本中使用

总结:四种作用域下若都有某个变量,其优先级为:Local > Embeded > Global > Built-In

class:类,是一组事物共性的抽象——类是抽象的,没有具体值的

class = attributes + methods

object:对象,是从属于某个类的一个具体实例——对象是具体的

面向对象的三个基本特征:

①封装:把原本离散的数据和操作包装为一个整体——定义class

class Emp :

def  __init__(self, age, ename) : #构造方法

self.age = age #封装属性

self.ename = ename #封装属性

def  printInfo(self): #封装方法

print(self.ename, self.age)

e2 = Emp(20, 'Tom') #构建实例不要使用new关键字

②继承:让一个类自动获取另一个类中全部的成员,从而提高代码可维护性

class  Emp:

pass

class  Coder( Emp ): #Python支持多继承

def __init__(self)

super().__init__() #在子类构造方法内调用父类构造方法

c3 = Coder( ) #创建子类对象,其体内有一个父类的对象

③多态:一个方法,根据对象的不同(父或子),可能运行出多种结果

class  Emp:

def printInfo():

pass

class  Coder(Emp):

def printInfo():      #子类重写/覆盖了父类的同名方法

pass

-------------------------------------

e = Emp()

e.printInfo() #第一次调用

e = Coder()

e.printInfo() #第二次调用,与第一次调用结果不同

说明:

①Python中没有private/protected/public访问修饰符,如果想让一个属性只能在本类内部使用不能在类外使用:只需要在属性名前添加两个下划线即可;例如: self.__age = 30

②Python中没有static关键字,想实现类似的效果,可使用“类属性”——直接声明在类内(不是方法内),且不用self.来访问:

class  Emp:

location  = '中国'    #类属性,访问方法:Emp.location

def __init__(self):

self.age = 30    #实例属性

5.Python中的异常处理

Exception:异常,可能发生也可能不发生错误!如果没发生程序可以正常执行下去;反之若发生了就可能导致程序终止执行。

示例:请用户从键盘输入两个数字,程序计算出数字的商,输出在屏幕上

try:

#可能发生异常的语句

#...

except  XxError as e:

print(e)

except  YyError as e:

print(e)

except  Exception as e:

print(e)

finally:

#无法异常发生与否都要执行的收尾处理

如果需要根据业务逻辑,可以手工抛出错误:  raise  Exception('错误消息')

注意:手工抛出的错误也必须被try..except...

python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

实现python中的map函数

假设Python没有提供map()函数,自行编写my_map()函数实现与map()相同的功能.以下代码在Python 2.7.8中实现. 实现代码: def my_map(fun,num): i = ...

python中常用的函数与库一

1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...

python基础-内置函数详解

一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

python --- Python中的callable 函数

python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

python迭代器与iter()函数实例教程

python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...

python基础——高阶函数

python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数

#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...

如何查看Python的内置函数

经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...

随机推荐

多表数据连接 Left join

一个我写的实例:其中多表连接,一共连接了3个表.使用聚集函数SUM,用到了GROUP BY SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as  ...

supersr--图形上下文的注意点

- (void)test { // 不要自己调用drawRect:方法的原因: // 当系统调用drawRect:方法之前, 会创建一个与当前UIView的layer相关的图形上下文, 这样就可以保证 ...

hdu 4622 Reincarnation trie树+树状数组/dp

题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串. 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 网上也有用后缀数组搞得. 思路 ...

Fast Intro To Java Programming (1)

基本语法 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的类来说,类名的首字母应该大写.如果类名由若干单词组 ...

[Javascript] Functor law

Functor laws: 1. Identity: map(id) == id 2. Composition: compose(map(f), map(g)) == map(compose(f,g) ...

【多线程】--生产者消费者模式--synchronized版本

在实现生产者消费者模式之前,我们先了解一下线程的5种状态:被创建.运行.冻结.消亡.阻塞,如下图: 在Jdk1.5发布之前,我们实现生产者消费者模式一般使用synchronized + while循环 ...

oracle 、mysql、 sql server使用记录

oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

HTML基础-DAY1

HTML基础 Web的本质就是利用浏览器访问socket服务端,socket服务端收到请求回复数据提供给浏览器进行渲染显示. import socket def main(): sock = sock ...

2-14-1 MySQL基础语句,查询语句

一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询.更 ...

java语言国际化--ResouceBundle、struts

一.Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值