目錄
一、概述​​
#二、playbook 核心元素
2、用户自定义变量
3、通过roles传递变量
4、 Host Inventory
3)流程控制
1、用when 来表示的条件判断
2、标签(只执行配置文件中的一个任务)
3、循环 with_items
4、循环嵌套(字典)
4)模板 templates
1、定义模板" >1、定义模板
2、定义yaml编排" >2、定义yaml编排
5)handlers(触发事件)
6)roles
1、roles介绍与优势
2、目录结构
3、实战操作
首頁 運維 安全 Ansible Playbook 講解與實戰操作

Ansible Playbook 講解與實戰操作

Jun 09, 2023 pm 08:58 PM
清單

一、概述​​

  • playbookad-hoc比較,是一種完全不同的運用ansible的方式,類似與saltstack的state狀態檔。 ad-hoc無法持久使用,playbook可以持久使用。
  • playbook是由一個或多個play組成的列表,play的主要功能在於將事先歸併為一組的主機裝扮成事先通過ansible中的task定義好的角色。
  • 從根本上來講,所謂的task無非是呼叫ansible的一個module。將多個play組織在一個playbook中,即可以讓它們聯合起來按事先編排的機製完成某一任務。

參考文件:https://ansible-tran.readthedocs.io/en/latest/docs/playbooks.html

Ansible 的基礎介紹和環境部署可以參考我這篇文章:#Ansible 介紹與實戰操作演示


Ansible Playbook 讲解与实战操作


#二、playbook 核心元素

  • ##Hosts執行的遠端主機清單
  • Tasks任務集
  • Varniables內建變數或自訂變數在playbook中呼叫
  • Templates模板,即使用模板語法的文件,例如設定檔等
  • Handlers 和notity結合使用,由特定條件觸發的操作,滿足條件方才執行,否則不執行
  • Tags標籤,指定某條任務執行,用於選擇運行playbook中的部分程式碼。
三、playbook 語法(yaml)

  • #playbook使用yaml語法格式,後綴可以是yaml,也可以是yml
  • YAML( /ˈjæməl/ )參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822,Clark Evans在2001年5月在首次發表了這種語言,另外Ingy döt Net與OrenBen-Kiki也是這語言的共同設計者。
  • YAML格式是類似JSON的檔案格式。 YAML用於檔案的設定編寫,JSON多用於開發設計。
1)YAML 介紹

1、YAML 格式如下

  • 檔案的第一行應該以「--- 」(三個連字符)開始,表示YAML檔案的開始。
  • 在同一行中,#之後的內容表示註釋,類似於shell,python和ruby。
  • YAML中的清單元素以「-」開頭並且跟著一個空格。後面為元素內容。
  • 同一個清單之中的元素應該保持相同的縮進,否則會被當作錯誤處理。
  • play中hosts、variables、roles、tasks等物件的表示方法都是以鍵值中間以「:」分隔表示,並且「:」之後要加一個空格。
2、playbooks yaml設定檔解釋
Hosts:运行指定任务的目标主机
remoute_user:在远程主机上执行任务的用户;
sudo_user:
tasks:任务列表
 
tasks的具体格式:
 
tasks:
- name: TASK_NAME
module: arguments
notify: HANDLER_NAME
handlers:
- name: HANDLER_NAME
module: arguments
 
##模块,模块参数:
格式如下:
(1)action: module arguments
 (2) module: arguments
注意:shell和command模块后直接加命令,而不是key=value类的参数列表
 
 
handlers:任务,在特定条件下触发;接受到其他任务的通知时被触发;
登入後複製
#3、範例

---
- hosts: web
remote_user: root
tasks:
- name: install nginx##安装模块,需要在被控主机里加上nginx的源
yum: name=nginx state=present
- name: copy nginx.conf##复制nginx的配置文件过去,需要在本机的/tmp目录下编辑nginx.conf
copy: src=/tmp/nginx.conf dest=/etc/nginx/nginx.conf backup=yes
notify: reload#当nginx.conf发生改变时,通知给相应的handlers
tags: reloadnginx#打标签
- name: start nginx service#服务启动模块
service: name=nginx state=started
tags: startnginx#打标签

handlers:
- name: reload
service: name=nginx state=restarted
登入後複製

2)variables 變數

#variables變數有四種定義方法。如下:

1、facts:可以直接呼叫

ansible中有setup模組,這個模組就是透過facts元件來實現的,主要是節點本身的一個系統訊息,bios資訊,網絡,硬碟等等資訊。這裡的variables也可以直接呼叫facts元件的facters我們可以使用setup模組來獲取,然後直接放入我們的劇本之中呼叫即可。

ansible web -m setup
登入後複製

Ansible Playbook 讲解与实战操作

常用的几个参数:

ansible_all_ipv4_addresses # ipv4的所有地址
ansible_all_ipv6_addresses # ipv6的所有地址
ansible_date_time # 获取到控制节点时间
ansible_default_ipv4 # 默认的ipv4地址
ansible_distribution # 系统
ansible_distribution_major_version # 系统的大版本
ansible_distribution_version # 系统的版本号
ansible_domain #系统所在的域
ansible_env #系统的环境变量
ansible_hostname #系统的主机名
ansible_fqdn #系统的全名
ansible_machine #系统的架构
ansible_memory_mb #系统的内存信息
ansible_os_family # 系统的家族
ansible_pkg_mgr # 系统的包管理工具
ansible_processor_cores #系统的cpu的核数(每颗)
ansible_processor_count #系统cpu的颗数
ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python # 系统上的python
登入後複製

搜索

ansible web -m setup -a 'filter=*processor*'
登入後複製

Ansible Playbook 讲解与实战操作

2、用户自定义变量

自定义变量有两种方式

  • 通过命令行传入
ansible-playbook命令行中的 -e VARS,--extra-vars VARS,这样就可以直接把自定义的变量传入
登入後複製

使用playbook定义变量,实例如下:

---
- hosts: web
remote_user: root
tasks:

- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
copy: src=/tmp/{{ rpmname }}.conf dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
 
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
登入後複製

使用:

ansible-playbook nginx.yml -e rpmname=keepalived
ansible-playbook nginx.yml --extra-vars rpmname=keepalived
登入後複製
  • 在playbook中定义变量
##在playbook中定义变量如下:
vars:
- var1: value1
- var2: value2
登入後複製

使用:

---
- hosts: web
remote_user: root
vars:
- rpmname: keepalived
tasks:
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
copy: src=/tmp/{{ rpmname }}.conf dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
 
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
登入後複製

3、通过roles传递变量

下面介绍roles会使用roles传递变量,小伙伴可以翻到下面看详解讲解。

4、 Host Inventory

可以在主机清单中定义,方法如下:

#向不同的主机传递不同的变量
IP/HOSTNAME varaiable=value var2=value2
 
#向组中的主机传递相同的变量
[groupname:vars]
variable=value
登入後複製

3)流程控制

1、用when 来表示的条件判断

- hosts: web
remote_user: root#代表用root用户执行,默认是root,可以省略
tasks:
- name: createfile
copy: content="test3" dest=/opt/p1.yml
when: a=='3'
- name: createfile
copy: content="test4" dest=/opt/p1.yml
when: a=='4'
登入後複製

如果a"3",就将“test3”,写入到web组下被管控机的/opt/p1.yml中,
如果a"4",就将“test4”,写入到web组下被管控机的/opt/p1.yml中。

执行

# 语法校验
ansible-playbook--syntax-check p1.yml

#执行
ansible-playbook -e 'a="3"' p1.yml
登入後複製

2、标签(只执行配置文件中的一个任务)

- hosts: web
tasks:
- name: installnginx
yum: name=nginx
- name: copyfile
copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
tags: copyfile
- name: start
service: name=nginx static=restarted
登入後複製

执行

# 语法校验
ansible-playbook--syntax-check p2.yml

#执行
ansible-playbook -t copyfile p2.yml 
登入後複製

3、循环 with_items

创建三个用户

- hosts: web
tasks:
- name: createruser
user: name={{ item }}
with_items:
- shy1
- shy2
- shy3
- name: creategroup
group: name={{ item }}
with_items:
- group1
- group2
- group3 
登入後複製

执行

#语法校验
ansible-playbook--syntax-check p3.yml

#执行
ansible-playbook p3.yml 
登入後複製

4、循环嵌套(字典)

用户shy1的属组是group1,用户shy2的属组是group2,用户shy3的属组是group3

- hosts: web
tasks:
- name: creategroup
group: name={{item}}
with_items:
- group3
- group4
- group5
- name: createuser
user: name={{item.user}} group={{item.group}}
with_items:
- {'user': shy3,'group': group3}
- {'user': shy4,'group': group4}
- {'user': shy5,'group': group5}
登入後複製

执行

#语法校验
ansible-playbook--syntax-check p4.yml

#执行
ansible-playbook p4.yml 
登入後複製

4)模板 templates

  • 模板是一个文本文件,嵌套有脚本(使用模板编程语言编写)
  • Jinja2是python的一种模板语言,以Django的模板语言为原本

该模板支持:

字符串:使用单引号或双引号;
数字:整数,浮点数;
列表:[item1, item2, ...]
元组:(item1, item2, ...)
字典:{key1:value1, key2:value2, ...}
布尔型:true/false
算术运算:
+, -, *, /, //, %, **
比较操作:
==, !=, >, >=, <, <=
逻辑运算:
and, or, not
登入後複製
  • 通常模板都是通过引用变量来运用的

【示例】

1、定义模板

usernginx; #设置nginx服务的系统使用用户
worker_processes{{ ansible_processor_vcpus }}; #工作进程数

error_log/var/log/nginx/error.log warn; #nginx的错误日志
pid/var/run/nginx.pid; #nginx启动时候的pid

events {
worker_connections1024; #每个进程允许的最大连接数
}

http { #http请求配置,一个http可以包含多个server

#定义 Content-Type
include /etc/nginx/mime.types;
default_typeapplication/octet-stream;

#日志格式 此处main与access_log中的main对应
#$remote_addr:客户端地址
#$remote_user:http客户端请求nginx认证的用户名,默认不开启认证模块,不会记录
#$timelocal:nginx的时间
#$request:请求method + 路由 + http协议版本
#status:http reponse 状态码
#body_bytes_sent:response body的大小
#$http_referer:referer头信息参数,表示上级页面
#$http_user_agent:user-agent头信息参数,客户端信息
#$http_x_forwarded_for:x-forwarded-for头信息参数
log_formatmain'$http_user_agent' '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

#访问日志,后面的main表示使用log_format中的main格式记录到access.log中
access_log/var/log/nginx/access.logmain;

#nginx的一大优势,高效率文件传输
sendfileon;
#tcp_nopush on;

#客户端与服务端的超时时间,单位秒
keepalive_timeout65;

#gzipon;
server { #http服务,一个server可以配置多个location
listen {{ nginxport }}; #服务监听端口
server_namelocalhost; #主机名、域名

#charset koi8-r;
#access_log/var/log/nginx/host.access.logmain;

location / {
root /usr/share/nginx/html; #页面存放目录
indexindex.html index.htm; #默认页面
}

#error_page404/404.html;

# 将500 502 503 504的错误页面重定向到 /50x.html
error_page 500 502 503 504/50x.html;
location = /50x.html { #匹配error_page指定的页面路径
root /usr/share/nginx/html; #页面存放的目录
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#root html;
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
#includefastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#denyall;
#}
}
include /etc/nginx/conf.d/*.conf;
}
登入後複製
登入後複製

2、定义yaml编排

---
- hosts: web
remote_user: root
vars:
- rpmname: nginx
- nginxport: 8088
tasks:
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
copy: src=/tmp/{{ rpmname }}.conf dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
 
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
登入後複製

使用

##使用reloadnginx标签,重新加载剧本
登入後複製

copy与template的区别

  • copy模块不替代参数,template模块替代参数
  • template的参数几乎与copy的参数完全相同

5)handlers(触发事件)

notify:触发
handlers:触发的动作
登入後複製

使用上场景:修改配置文件时

【示例】 正常情况时handlers是不会执行的

- hosts: web
tasks:
- name: installredis
yum: name=redis
- name: copyfile
template: src=redis.conf dest=/etc/redis.conf
tags: copyfile
notify: restart
- name: start
service: name=redis state=started
handlers:
- name: restart
service: name=redis
登入後複製

执行

ansible-playbook -t copyfile p6.yml
登入後複製

6)roles

1、roles介绍与优势

一般情况下将roles写在/etc/ansible/roles中,也可以写在其他任意位置(写在其他位置要自己手动建立一个roles文件夹)

  • 对于以上所有方式有个缺点就是无法实现同时部署web、database、keepalived等不同服务或者不同服务器组合不同的应用就需要写多个yaml文件,很难实现灵活的调用
  • roles用于层次性,结构化地组织playbook。roles能够根据层次结果自动装载变量文件、tasks以及handlers等。
  • 要使用roles只需要在playbook中使用include指令即可。
  • 简单来讲,roles就是通过分别将变量(vars)、文件(files)、任务(tasks)、模块(modules)以及处理器(handlers)放置于单独的目录中,并且可以便捷的include它们地一种机制。
  • 角色一般用于基于主机构建服务的场景中,但是也可以用于构建守护进程等场景中。4

2、目录结构

创建目录

mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}
登入後複製
登入後複製

Ansible Playbook 讲解与实战操作

  • roles/
  • mysql/:mysql服务的yml文件
  • httpd/:apached服务的yml文件
  • nginx/:nginx服务的yml文件
  • files/:存储由copy或者script等模块调用的文件或者脚本;
  • tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各个task;其他文件需要由main.yml进行包含调用;
  • handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各个handler;其他文件需要由main.yml进行包含调用;
  • vars/:此目录至少应该有一个名为main,yml的文件,用于定义各个variable;其他的文件需要由main.yml进行包含调用;
  • templates/:存储由templates模块调用的模板文件;
  • meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定以及依赖关系,其他文件需要由main.yml进行包含调用;
  • default/:此目录至少应该有一个名为main.yml的文件,用于设定默认变量;

3、实战操作

【1】创建目录

mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}
登入後複製
登入後複製

【2】定义配置文件

先下载nginx rpm部署包

# 下载地址:http://nginx.org/packages/centos/7/x86_64/RPMS/
 wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm -O nginx/files/nginx-1.18.0-1.el7.ngx.x86_64.rpm
登入後複製
  • nginx/tasks/main.yml
- name: cp
copy: src=nginx-1.18.0-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm
- name: install
yum: name=/tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm state=latest
- name: conf
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
tags: nginxconf
notify: new conf to reload
- name: start service
service: name=nginx state=started enabled=true
登入後複製
  • nginx/templates/nginx.conf.j2
usernginx; #设置nginx服务的系统使用用户
worker_processes{{ ansible_processor_vcpus }}; #工作进程数

error_log/var/log/nginx/error.log warn; #nginx的错误日志
pid/var/run/nginx.pid; #nginx启动时候的pid

events {
worker_connections1024; #每个进程允许的最大连接数
}

http { #http请求配置,一个http可以包含多个server

#定义 Content-Type
include /etc/nginx/mime.types;
default_typeapplication/octet-stream;

#日志格式 此处main与access_log中的main对应
#$remote_addr:客户端地址
#$remote_user:http客户端请求nginx认证的用户名,默认不开启认证模块,不会记录
#$timelocal:nginx的时间
#$request:请求method + 路由 + http协议版本
#status:http reponse 状态码
#body_bytes_sent:response body的大小
#$http_referer:referer头信息参数,表示上级页面
#$http_user_agent:user-agent头信息参数,客户端信息
#$http_x_forwarded_for:x-forwarded-for头信息参数
log_formatmain'$http_user_agent' '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

#访问日志,后面的main表示使用log_format中的main格式记录到access.log中
access_log/var/log/nginx/access.logmain;

#nginx的一大优势,高效率文件传输
sendfileon;
#tcp_nopush on;

#客户端与服务端的超时时间,单位秒
keepalive_timeout65;

#gzipon;
server { #http服务,一个server可以配置多个location
listen {{ nginxport }}; #服务监听端口
server_namelocalhost; #主机名、域名

#charset koi8-r;
#access_log/var/log/nginx/host.access.logmain;

location / {
root /usr/share/nginx/html; #页面存放目录
indexindex.html index.htm; #默认页面
}

#error_page404/404.html;

# 将500 502 503 504的错误页面重定向到 /50x.html
error_page 500 502 503 504/50x.html;
location = /50x.html { #匹配error_page指定的页面路径
root /usr/share/nginx/html; #页面存放的目录
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#root html;
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
#includefastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#denyall;
#}
}
include /etc/nginx/conf.d/*.conf;
}
登入後複製
登入後複製
  • nginx/vars/main.yml
nginxport: 9999
登入後複製
  • nginx/handlers/main.yml
- name: new conf to reload
service: name=nginx state=restarted
登入後複製
  • 定义剧本文件(roles.yml
- hosts: web
remote_user: root
roles:
- nginx
登入後複製

最后的目录结构如下:

Ansible Playbook 讲解与实战操作

执行

ansible-playbook roles.yml
登入後複製

Ansible Playbook 讲解与实战操作


以上是Ansible Playbook 講解與實戰操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
如何使用Python從清單中刪除方括號 如何使用Python從清單中刪除方括號 Sep 05, 2023 pm 07:05 PM

Python是一款非常有用的軟體,可以根據需要用於許多不同的目的。 Python可以用於Web開發、資料科學、機器學習等許多其他需要自動化處理的領域。它具有許多不同的功能,可以幫助我們執行這些任務。 Python列表是Python的一個非常有用的功能之一。顧名思義,清單包含您希望儲存的所有資料。它基本上是一組不同類型的信息。刪除方括號的不同方法許多時候,使用者會遇到清單項目顯示在方括號中的情況。在本文中,我們將詳細介紹如何去除這些括號,以便更好地查看您的清單。字串和替換函數刪除括號的最簡單方法之一是在

如何使用Python的count()函數計算清單中某個元素的數量 如何使用Python的count()函數計算清單中某個元素的數量 Nov 18, 2023 pm 02:53 PM

如何使用Python的count()函數計算清單中某個元素的數量,需要具體程式碼範例Python作為一種強大且易學的程式語言,提供了許多內建函數來處理不同的資料結構。其中之一就是count()函數,它可以用來計算清單中某個元素的數量。在本文中,我們將詳細介紹如何使用count()函數,並提供具體的程式碼範例。 count()函數是Python的內建函數,用來計算某

製作 iPhone 上 iOS 17 提醒應用程式中的購物清單的方法 製作 iPhone 上 iOS 17 提醒應用程式中的購物清單的方法 Sep 21, 2023 pm 06:41 PM

如何在iOS17中的iPhone上製作GroceryList在「提醒事項」應用程式中建立GroceryList非常簡單。你只需添加一個列表,然後用你的項目填充它。該應用程式會自動將您的商品分類,您甚至可以與您的伴侶或扁平夥伴合作,列出您需要從商店購買的東西。以下是執行此操作的完整步驟:步驟1:開啟iCloud提醒事項聽起來很奇怪,蘋果表示您需要啟用來自iCloud的提醒才能在iOS17上建立GroceryList。以下是它的步驟:前往iPhone上的「設定」應用,然後點擊[您的姓名]。接下來,選擇i

我們可以在Java列表中插入空值嗎? 我們可以在Java列表中插入空值嗎? Aug 20, 2023 pm 07:01 PM

SolutionYes,Wecaninsertnullvaluestoalisteasilyusingitsadd()method.IncaseofListimplementationdoesnotsupportnullthenitwillthrowNullPointerException.Syntaxbooleanadd(Ee)將指定的元素追加到此清單末尾的元素。類型參數E −元素的運行時類型。參數e −要追加到此列表的元

Del和remove()在Python中的列表上有什麼區別? Del和remove()在Python中的列表上有什麼區別? Sep 12, 2023 pm 04:25 PM

在討論差異之前,讓我們先了解一下Python清單中的Del和Remove()是什麼。 Python清單中的Del關鍵字Python中的del關鍵字用於從List中刪除一個或多個元素。我們也可以刪除所有元素,即刪除整個清單。範例使用del關鍵字從Python清單中刪除元素#CreateaListmyList=["Toyota","Benz","Audi","Bentley"]print("List="

建立雜貨清單的方法:使用 iPhone 的「提醒事項」App 建立雜貨清單的方法:使用 iPhone 的「提醒事項」App Dec 01, 2023 pm 03:37 PM

在iOS17中,Apple在提醒應用程式中添加了一個方便的小清單功能,以便在您外出購買雜貨時為您提供幫助。繼續閱讀以了解如何使用它並縮短您的商店之旅。當您使用新的「雜貨」清單類型(在美國以外名為「購物」)建立清單時,您可以輸入各種食品和雜物,並按類別自動組織它們。該組織使您在雜貨店或外出購物時更容易找到您需要的東西。提醒中可用的類別類型包括農產品、麵包和穀物、冷凍食品、零食和糖果、肉類、乳製品、雞蛋和奶酪、烘焙食品、烘焙食品、家居用品、個人護理和健康以及葡萄酒、啤酒和烈酒。以下是在iOS17創

使用Python的reverse()函數反轉列表 使用Python的reverse()函數反轉列表 Nov 18, 2023 pm 02:14 PM

使用Python的reverse()函數反轉列表,需要具體程式碼範例在Python中,我們經常需要在程式設計中對列表進行操作,其中反轉列表是常見的一種需求,這時候我們可以使用Python內建的reverse ()函數來實現。 reverse()函數的作用是反轉列表中的元素順序,即將列表中第一個元素變為最後一個元素,第二個元素變為倒數第二個元素,以此類推。下面是使用Py

無法顯示win7無線網路列表 無法顯示win7無線網路列表 Dec 22, 2023 am 08:07 AM

為了方便很多人移動辦公,很多筆記本都帶有無線網的功能,但有些人的電腦上無法顯示WiFi列表,現在就給大家帶來win7系統下遇到這種問題的處理方法,一起來看一下吧。 win7無線網路清單顯示不出來1、右鍵你電腦右下角的網路圖標,選擇“開啟網路和共用中心”,開啟後再點擊左邊的「變更轉接器設定」2、開啟後滑鼠右鍵選擇無線網路轉接器,選擇「診斷」3、等待診斷,如果系統診斷出問題就修復它。 4.修復完成之後,就可以看到WiFi清單了。

See all articles