python基础

python基础 01 

Python基础导学 00

力扣,牛客网     使用python3.0版本

Windows系统开发环境搭建 01

安装Python解释器(翻译成计算机可以理解的,并且执行代码),Pycharm(python代码编辑器)

基础语法巩固 02

  1. 变量是内存中的一块区域。对象赋值实际上是对象的引用。a=10
  2. 变量的命名: 变量名由字母,数字,下划线组成,   不能以数字开头.  (a,b, c)

hello = 100, hello_world = 100, count2 =100, 1count=10(x)

  1. Python中,变量定义时不需要指定类型的,当用变量的时候,必须要给这个变量赋值;

Python 支持基本数字类型:

整型(int),浮点型(float),bool值

运算符:

1). 算术运算符:+,-,*,**(次方), /, %(取余), //(取整)

2). 赋值运算符:=, +=, -=, /=, *=, %=

3)关系运算符: >, >=, <, <=, !=, ==

最终返回bool类型

4) 逻辑运算符:逻辑与and, 逻辑或or, 逻辑非not

逻辑与,全真则真,一假则假

逻辑或,全假则假,一真则真

逻辑非,真就是假,假就是真

=和==的区别?

=表示赋值,==表示判断

数据的输入与输出

input 输入数据

Print 数据输出

1.格式化打印字符串:

%S:字符串

%d:整型数

%f:浮点数

%.2f:保留小数点后两位的浮点数

2.format格式化打印字符串

常用内置函数操作:

1). 标准类型函数(cmp, str和 type): 可以用于所有的标准类型。

2). 转换工厂函数(int, long, float,  bool和 complex)

3). 功能函数(abs(取绝对值),  divmod(返回商和余数), pow(次方)和 round(保留小数点后几位))

4). 进制转换函数(bin, hex, oct)

5). ASCII转换函数(chr, ord)

相关拓展模块:

decimal, array, math, random(随机取)

实例1:

编写一个程序,录入学生的姓名和三门科目的百分制成绩,计算该学生的总分和平均成绩。

输入姓名: 张三

输入语文成绩: 98

输入数学成绩: 99

输入英语成绩: 97

学生张三的总分为: 294, 平均成绩为:  98分。

进入python中的idle

name = input("请输入姓名: ")
m = int(input("请输入语文成绩: "))
n = int(input("请输入数学成绩: "))
p = int(input("请输入英语成绩: "))
s = m+n+p
avg = (int(m+n+p)/3)
print(f"总成绩为:{s}, 平均成绩为:{avg}")

  

也是一个顺序控制流程

三大流程控制 03

分支流程控制:

python 有两大特性, 一是简洁,二是可读性好。

Python代码块缩进完全能够清楚地表达一个语句属于哪个代码块。

Python中input接收字符串,如果接收整型数,需要通过int转换成整型数。

冒号和缩进是python的语法规范

age = int(input("年龄:"))
print("成年" if age>18 else "未成年")

三元运算符是软件编程中的一个固定格式,使用这个算法可以使调用数据时逐级筛选。

语法:条件表达式?表达式1:表达式2。

含义: 如果条件表达式成立或者满足则执行表达式1,否则执行第二个。、

多分支语句

eilf 满足第二个条件做什么操作

score = int(input("成绩: "))
if 90<=score<=100:
    print("等级为A")
elif 80<=score<90:
    print("等级为B")
else:
    print("等级为C")

 

name = "admin"
passwd = "westos"
name = input("请输入用户名: ")
passwd = input("请输入密码: ")
if name == "admin" and passwd == "westos":
    print("用户admin登陆成功")
else:
    print("用户admin登录失败")

 

总结:分支语句

  1. 单分支语句:

if 条件:

满足条件执行的内容

  1. 双分支语句:

if 条件:

满足条件执行的内容

else:

不满足条件执行的内容

  1. 三元运算符(双分支的简化版):

满足条件执行的内容 if 条件 else 不满足条件执行的内容

  1. 多分支语句:

If 条件1:

满足条件1执行的内容

elif 条件2:

满足条件2执行的内容

else:

满足条件3执行的内容

循环流程控制:

count = 0
while count <= 100:
    print(count)
    count += 1

       

用户登录成功进入系统,用户登录失败重新进入登录系统,并且统计登录次数:

try_count = 1
while True:
    print(f"用于第{try_count}次登录")
    try_count += 1
    name = input("请输入用户名: ")
    passwd = input("请输入密码: ")
    if name == "admin" and passwd == "westos":
        print("用户登录成功")
        exit()
    else:
        print("用户登录失败")

输出数字0-100之间的偶数:

          

for循环语句语法结构

与传统语言(e.g.C/C++,Java )中的 for 语句不同, Python 的 for语句更加简洁.

for循环原理(有概念即可, 讲生成器时详细说):

可以遍历序列成员, 可以用在 列表解析 和 生成器表达式中, 它会自动地调用迭代器的 next()方法, 捕获 StopIteration 异常并结束循环(所有这一切都是在内部发生的).

range(start,end)start 开始,end-1结束

range(num)0开始,num-1结束

range(start,end,step)start 开始,end-1结束,step为步长

输出0-100之间所有的偶数

for num in range(0,101,2):
    print(num)

 

用for循环实现0-100之间所有的奇数:

for num in range(1,101,2):
    if num % 2 ==1:
        print(num)
    num += 1

 

For循环遍历字符串:

string = "mayifei"
for item in string:
    print("---",item)

range语法:

 range(start, end, step =1)返回一个包含所有 k 的列表, start <= k < end , k每次递增 step

跳出循环语句break 语句和continue 语句

  1. break语句用来终止循环语句,即循环条件没False条件或者序列还没被完全递归完,也会停止执行循环语句
    count = 0
    while count <= 10:
        count +=1
        print(count)
        if count == 5:
            break
    

  

2.continue 跳过当前循环的剩余语句,然后继续进行下一轮循环。(continue后面的命令不会执行)

count = 0
while count <= 10:
    count += 1
    print(count)
    if count == 5:
        continue
        print("hello")
     

案例一:九九乘法表:

如何让print不换行?

Print(“XXX”,end=” ”)

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{i}*{j}={i*j}",end=" ")
    print()

案例二:防黑客暴力破解的用户登录系统:

需求: 根据输入用户名和密码,判断用户名和密码是否正确。 为了防止暴力破解, 登陆仅有三次机会, 如果超过三次机会, 报错提示。

数据库信息:

name='admin' passwd='westos'

try_count = 1
while True:
    print(f"用于第{try_count}次登录")
    try_count += 1
    if try_count > 4:
        print("用户已锁定")
        exit()
    name = input("请输入用户名: ")
    passwd = input("请输入密码: ")
    if name == "admin" and passwd == "westos":
        print("用户登录成功")
        exit()
    else:
        print("用户登录失败")

While循环和else结合的补充:

try_count = 0
while try_count < 3:
    try_count += 1
    print(f"用户第{try_count}次尝试登录")
else:
    print("已达最高尝试次数")

While条件表达式:

满足条件执行的内容

Else条件表达式:

不满足条件执行的内容

循环语句语法汇总:

实现循环的两种方式:while for

1.While循环:

(1)while循环:

满足条件执行的内容

(2)while循环:

   满足条件执行的内容

Else:

不满足条件的内容

  1. 死循环:

While Ture:

   一直可以循环的内容

  1. for循环:
  1. for和range的结合:

for num in range(n):

循环的内容

  1. for和字符串的结合:

for item in ”westos”:

  1. for 和else的结合:

for num in range(n):

循环的内容

Else:

循环结束后的内容

  1. 跳出循环:

Break:跳出循环

Continue:结束本次循环

Exit:退出整个程序

  1. 循环嵌套

九九乘法表

Python内置的数据类型:

Str:字符串

S1 = ’hello’

S2 = “hello”

S3 = “’ hello“’

Anrry:数组

存储同种类型的数据结构

[1.2.3]  [1.1,2.2,3.3]

List:列表

可以存储不同类型的数据结构

[1,1.1,”hello”]

Tuple:元组

和列表唯一区别是增删改(如果元组里只有一个元素,一定要加逗号)

Set:集合

不重复且无序的

Dict:字典

哈希 key和value  ,键值对,通过key可以快速找到value值

User = {“name”:”westos”,”age”:10}

Print(user,type(user))

python基础 02

字符串  04

字符串或串(String)是由数字、字母、下划线组成的一串字符。Python 里面最常见的类型。 可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它。

第一种方式:

str1 = 'our company is westos'

第二种方式:

str2 = "our company is westos"

第三种方式:

转义符号

一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符

\n 换行符 用于输出

\t 水平制表符(tab键)用于输出

\\ 反斜杠字符 用于表示一个反斜杠字符

\ 单引号 用于表示一个单引号字符

\ 双引号 用于表示一个双引号字符

字符串的基本特性

  1. 连接操作符与重复操作符

  hello+’westos

name = 'westos'
print('hello'+ name)

  

 +*50

2.成员操作符

s = 'westos'
print('westos' in s) 
print('westos' not in s) 

 

3.正向索引和反向索引

1. 索引(s[i] ):     获取特定偏移的元素

2. 索引的分类:      正向索引, 反向索引

s = 'westos'
print(s[0])
print(s[-2])

回顾:

Range(3)   {0,1,2}

Range(1,4)  {1,2,3}

Range(1,6,2) {1,3,5}

切片:

1.  切片S[i:j]提取对应的部分作为一个序列:

2.  如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;

扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;

3.  s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;

4.  s[::-1]是实现字符串反转的一种方法;

S[start:end:step]

S[:end]

S[start:]

S[:n]拿出前n个元素

S[n:]除了前n个元素之外的所有元素

S[:]从头到尾所有元素

S[::-1]倒叙

需求:已知:“172”“25”“254”“100”,输出100-254-25

li = ["172","25","254","100"]
print("-".join(li[3:0:-1]))

  1. 可迭代对象/for循环
    s = 'westos'
    count = 0
    for item in s:
        count += 1
        print(f"第{count}个字符:{item}")
    

names = ["粉丝","粉条","粉带"]
for name in names:
    print(f"它的名字是:{name}")

练习:用户输入一个字符串,判断字符串是否为回文字符串

例如:aba abba

Abc不是回文字符串

s1 = input("请输入字符串:")
s2 = s1[::-1]
if s1 == s2:
    print(f"{s1}为回文字符串")
else:
    print(f"{s1}不是回文字符串")

Pycahrm 新建文件:alt+insert

Pycharm 格式化代码符合pep8 代码风格(ctrl+alt+L)

Pycharm Ctrl+d:复制一行

字符串内建方法

字符串的判断与转换:

title: 标题需要每一个首字母大写,e.g. Hello Python

space: 空格指的是广义的空格, e.g: \n, \t,

字符串的类型判断

isdigit: 全数字

isupper: 全大写

islower: 全小写

isarpha:

isalum: 字母或数字

s = 'Hello WestoS'
print(s.isalnum())
print(s.isdigit())
print(s.isupper())

字符串的类型转换

upper:转成大写

lower:转成小写

title:成标题

swapcase: 大写转成小写,小写转成大写

print('hello'.upper())
print('HellO'.lower())
print('HellO WEstos'.title())
print('HellO WEstos'.swapcase())

字符串的开头和结尾匹配:

开头:startswith

url = 'http://baidu.com'
if url.startswith('http'):
    print(f"可以访问{url}")

结尾:endswith

filename = 'hello.png'
if filename.endswith("png"):
    print(f"{filename}是一个图片文件")

字符串的数据清洗

lstrip: 删除字符串左边的空格(广义的空格:\n,\t,” ”)

rstrip: 删除字符串右边的空格(广义的空格:\n,\t,” ”)

strip: 删除字符串左边和右边的空格(广义的空格:\n,\t,” ”)

replace:替换函数 删除中间的空格,将空格替换为空  replace(“”, )

字符串的位置调整

center() 字符串居中且为指定长度

ljust() 字符串靠左且为指定长度

rjust() 字符串靠右且为指定长度

print("学生管理系统".ljust(10,"*"))
print("学生管理系统".rjust(10,"*"))
print("学生管理系统".center(10,"*"))

字符串的搜索,统计

find(str,beg,end)   检测str是否包含在string中,返回索引

index(str,beg,end)   检测str是否包含在string中,返回索引,否则抛出异常

count(str,beg,end)    检测str在string中一共出现的次数

 作业:

编写一个函数来验证输入的字符串是否是有效的 IPv4 ?

    1). IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。

比如,172.16.253.1;

    2). IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。

其他内置方法

cmp(    )          根据字符串的 ASCII 码值进行比较(py3取消)

len(    )        返回字符串的字符数

max(  ) and min(   )    返回最大或者最小的字符,(按照 ASCII 码值排列)

enumerate(   )    枚举对象同时列出数据和数据下标

zip(   )        将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

随机生成100个验证码,由6个字符组成:

设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供基本算术运算(加减乘)的题目,每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。最后显示正确率。

import random
count = 10
right_count = 0
for i in range(count):
    num1 = random.randint(1,10)
    num2 = random.randint(1,10)
    symbol = random.choice(["+","-","*"])
    result = eval(f"{num1}{symbol}{num2}")
    print(f"{num1} {symbol} {num2} = ? ")
    user_answer = int(input("answer:"))
    if user_answer == result:
        print("right")
        right_count += 1
    else:
        print("error")
print("right percent: %.2f%" %(right_count/count*100))

python基础 03

列表&元组 05

序列:

成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。

序列数据类型包括:字符串,列表,和元组类型。

特点: 都支持下面的特性 1.索引与切片操作符 2.成员关系操作符(in , not in) 3.连接操作符(+) & 重复操作符(*)

数组:

存储同一种数据类型的集和。scores=[12,95.5] 列表(打了激素的数组): 可以存储任意数据类型的集和。  

 创建一个空列表   

li = []
print(li, type(li))
li1 = [1]
print(li1, type(li1))

 

  list = []  

bool类型中:

TRUE:1

FALSE:0

  创建一个包含元素的列表,元素可以是任意类型,      包括数值类型,列表,字符串等均可, 也可以嵌套列表。

   list = ["fentiao", 4, 'gender']  

   list = [['粉条', 100], ["粉丝", 90], ["粉带", 98]]

列表的添加:

1)追加:列表可通过append追加一个元素到列表中;

li = [1,2,3]
li.append(4)
print(li)

 2)在列表开头添加:在指定位置添加元素使用insert方法; L.insert(index, object)

li = [1,2,3]
li.insert(0,"ma")
print(li)

3)一次追加多个元素:列表可通过extend方法拉伸, 实现追加多个元素到列表中

li = [1,2,3]
li.extend([4,5,6])
print(li)

列表的修改:

索引修改:

li = [1,2,3]
li[0] = "ma"
li[-1] = "liu"
print(li)

 切片修改:

li = [1,2,3]
li[:2] = ["ma","liu"]
print(li)

列表的查看:通过索引和切片查看元素。查看索引值和切片次数。

li = [1,2,3,1,2,1]
print(li.count(1))
print(li.index(2))

 列表的删除:

 list.remove()删除列表中的指定元素。  

li = [1,2,3]
li.remove(1)
print(li)

list.pop()根据元素的索引值进行删除指定元素。

li = [1,2,3]
print(li.pop(-1))
print(li)

  list.clear: 清空列表里面的所有元素。

li = [1,2,3]
li.clear()
print(li)

将pop方法的结果存储到delete_num中

li = [1,2,3]
delete_num = li.pop(-1)
print(li)
print(f"删掉的元素是:", delete_num)

其他操作:

1)反转

li = [12,34,23,56]
li.reverse()
print(li)

2)sort从小到大排

li = [12,34,56,23]
li.sort()
print(li)

sort从大到小排:

li = [12,23,34,45,24]
li.sort(reverse = True)
print(li)

 copy复制:

li = [12,223,34,45]
li1 = li.copy()
print(id(li),id(li1))
print(li,li1)

元组(tuple不能修改元素)的创建,删除及特性

1).  定义空元组        tuple = ()

t = ()
print(t,type(t))

2).  定义单个值的元组(一定要加逗号)    tuple = (fentiao,)

3).  一般的元组        tuple = (fentiao, 8, male)

特性:     连接&重复操作符、成员操作符、索引&切片     

注意:    元组是不可变数据类型,不能对元组的值任意更改;

元组的方法

t.count(value)-->int    返回value在元组中出现的次数;

t.index(value)        返回value在元组中的偏移量(即索引值)

命名元组

Tuple还有一个兄弟,叫namedtuple。虽然都是tuple,但是功能更为强大。

collections.namedtuple(typename, field_names)     

typename:类名称   

 field_names: 元组中元素的名称

定义命名元组类与应用

命名元组是一个类,有两种方式来定义命名元组:

from collections import namedtuple
user = namedtuple("user",("name","age","city"))
user1 = user("root","18","xian")
print(user1)
print(user1.name)
print(user1.age)
print(user1.city)

实例化命名元组,获得类的一个实例:

访问命名元组: 通过逗号运算符和属性名来访问元组字段的值 user.name; user.age, user.id

类属性 _fields:包含这个类所有字段名的元组

类方法 _make(iterable):接受一个可迭代对象来生产这个类的实例

实例方法_replace():用于修改实例的属性

is和==的区别

问题: is和==两种运算符在应用上的本质区别是什么?

1). Python中对象的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

2). is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。

3). ==用来比较判断两个对象的value(值)是否相等;(type和value)      is也被叫做同一性运算符, 会判断id是否相同;(id, type 和value)

print(1 == "1")
li = [1,2,3]
li1 = li.copy()
print(li == li1)
print(li is li1)

在python语言中:

==:类型和值是否相等

is:类型和值是否相等,内存地址是否相等

深拷贝和浅拷贝

1.值得引用

nums1 = [1,2,3]
nums2 = nums1
nums1.append(4)
print(nums2)

nums1和nums2指向同一存储空间

问题:  深拷贝和浅拷贝的区别?/python中如何拷贝一个对象?

赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)

浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())

公用一个值;

这两个变量的内存地址一样;

对其中一个变量的值改变,另外一个变量的值也会改变;

n1 = [1,2,3]
n2 = n1.copy()
print(id(n1),id(n2))
n1.append(4)
print(n2)

深拷贝: 一个变量对另外一个变量的值拷贝。(copy.deepcopy())

两个变量的内存地址不同;

两个变量各有自己的值,且互不影响;

对其任意一个变量的值的改变不会影响另外一个;

可变数据类型:list

不可变数据类型:str,数值型,tuple,namedtuple

n1 = [1,2,[3,4]]
n2 = n1.copy()
n1[-1].append(5)
print(n2)

 

如果有列表嵌套的时候,或者列表中包含可变数据类型时,一定要选择深拷贝。

拓展:批量注释:选中注释的内容,ctrl+#

集合&字典 06

集合

集合(set)是一个无序的不重复元素序列。

1,2,3,4,1,2,3 = 1,2,3,4 集合的创建:   

 1).   使用大括号 { } 或者 set() 函数创建集合;   

 2).   注意:    创建一个空集合必须用 set() 而不是 { }   

  { } 是用来创建一个空字典。

s = {}
print(s,type(s))

s = set()
print(s,type(s))

集合的创建:不可变的数据类型

s = {1,2,3,4,1,2,3}
print(s,type(s))

 集合的特性:

不支持+,*,index,slice(因为集合无序不重复)

支持in和not in

集合的常用操作:

1.增加

add:添加单个元素

s = {1,2,3}
s.add(4)
print(s)

update:添加多个元素

s = {1,2,3}
s.update({4,5,6})
print(s)

2.删除

remove:元素如果存在,删除;不存在报错

discard:元素如果存在,删除;不存在不进行操作

pop:随机删除元素,集合为空报错

3.查看

差集:s1-s2

交集:s1&s2

对称差分:s1^s2:并集-交集

并集:s1 | s2

s1.subset(s2) : s2是不是s1的子集?

s1.disjoint(s2):s1和s2没有交集嘛?

4.拓展

frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。

frozenset 的这些方法和 set 集合同名方法的功能完全相同。

frozenset 的作用主要有两点:

当集合元素不需要改变时,使用 frozenset 代替 set 更安全。

当某些 API 需要不可变对象时,必须用 frozenset 代替set。比如 dict 的 key 必须是不可变对象,因此只能用 frozenset;再比如 set 本身的集合元素必须是不可变的,因此 set 不能包含 set,set 只能包含 frozenset。

练习题:

import random
s = set()
for i in range(1,1001):
    s.add(random.randint(0,1000))
s = sorted(s,reverse = True)
print(s)

字典

字典是另一种可变容器模型,且可存储任意类型对象。 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

d = {key1 : value1, key2 : value2 }

d = {'Z' : '字', 'D' : '典' }

 字典的创建:

d = {"name":"westos","age":"18","city":"xian"}
print(d,type(d))

字典的特性:

不支持+,*,index,slice(因为集合无序不重复)

支持in和not in

字典的常用方法:

1.查看

d.keys():查看所有的key值

d.values():查看所有的value值

d.items():查看字典的key,value值

d["key"]: 查看key所对应的value值

d["不存在"]:报错

d.get("不存在"): 不存在返回none

d.get("不存在","默认值"): 返回默认值

2.增加和修改

d["city"] = "xian"

 3.删除

d.pop["key"]

del d["key"]

4.遍历字典

默认情况下,字典只会遍历key值。

如何遍历key值和value值?

练习:

defaultdict 是 dict 的子类。但它与 dict 最大的区别在于,如果程序试图根据不存在的 key 访问 value,会引发 KeyError 异常;而 defaultdict 提供default_factory 属性,该为不存在的 key 来自动生成生成默认的 value。

需求:      我们想要一个能将键(key)映射到多个值的字(即所谓的一键多值字典)

解决方案:     1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。     2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素. 

数据类型的汇总

可变数据类型:list,set,dict

可以增删改。可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

不可变数据类型:数值类型,tuple,str

不可以增删改。python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

有序序列拥有的特性: 索引、切片、连接操作符、重复操作符以及成员操作符等特性。

函数:

常用的内置函数:

max,min,sum,divmod

函数必须有输入输出

函数的输入叫参数

   形参:不是真实的值(定义函数时的值)

   实参:是真实的值(调用函数时的值)

函数的输出叫返回值

max_num = max(1,2,3)
print(max_num)

如何创建函数?创建函数,函数内容不会执行

def get_max(num1,num2):
    result = num1 if num1 > num2 else num2
    return result

 如何调用函数?

def get_max(num1,num2):
    result = num1 if num1 > num2 else num2
    return result
max_num = get_max(23,45)
print(max_num)


为什么需要函数?

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数.

从实现函数的角度来看,其至少需要想清楚以下 3 点:

函数需要几个关键的需要动态变化的数据,这些数据应该被定义成函数的参数。

函数需要传出几个重要的数据(就是调用该函数的人希望得到的数据),这些数据应该被定义成返回值。

函数的内部实现过程。

 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具。定义函数需要用 def 关键字实现,范例如下:

空函数:

定义一个什么事也不做的空函数,可以用 pass 语句;pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来。

函数的调用

调用函数也就是执行函数。如果把创建的函数理解为一个具有某种用途的工具,那么调用函数就相当于使用该工具。 函数调用的基本语法格式: 函数名([形参值])

所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果. 没有返回值,默认返回None

从理论上说,不用函数,也能够编程,我们在前面已经写了程序,就没有写函数,当然,用python的内建函数姑且不算了。现在之所以使用函数,主要是:

1. 降低编程的难度(分而治之的思想)

2. 代码重用。避免了重复劳动,提供了工作效率。 

变量作用域

可变数据类型:列表,字典,集合

不可变数据类型:str,数值型,tuple

1.全局变量:全局生效的变量  函数外的变量

def login():
    name = "admin"
    print(name)
login()

def login():
    print(name)
name = "admin"
login()

 

 2.局部变量:局部生效的变量 函数内的变量

def logout():
    age = 19
    print(age)
logout()

3.函数内部修改局部变量

city = "xian"
def hello():
    city = "beijing"
    print(city)
hello()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值